From 4e83e3d3ad2d9c9173cd03fe512b671b64b421ac Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Tue, 21 Oct 2025 08:57:24 -0700 Subject: [PATCH 01/29] initial commit for myst port --- .gitignore | 3 +++ content/footer.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++ myst.yml | 40 +++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 content/footer.md create mode 100644 myst.yml diff --git a/.gitignore b/.gitignore index bd3b629..6cca02b 100644 --- a/.gitignore +++ b/.gitignore @@ -165,3 +165,6 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +# MyST build outputs +_build diff --git a/content/footer.md b/content/footer.md new file mode 100644 index 0000000..59b8a87 --- /dev/null +++ b/content/footer.md @@ -0,0 +1,60 @@ +% This defines the footer of the site, and is not parsed as a regular "page" +% We point to it with the following in `myst.yml`: +% site: +% parts: +% footer: footer.md + +% Here we use `grid` to add a basic grid structure to the HTML, +% but the formatting column sizes are defined manually in css/footer.css +% see the `grid-template-columns` line. +:::::{grid} 3 3 5 5 +:class: outer-grid col-screen + + + +::::{div} + +# Landing Pages + +```{image} https://jupyterbook.org/en/stable/_images/logo-square.svg +:width: 50px +:align: left +``` + +This is a description of our project. And a [link to its homepage](https://github.com/jupyter-book/example-landing-pages). +:::: + + + +::::{div} +:::: + + + +% This a _second_ grid embedded within the first one, to create nicer +% responsive design experience. This grid will have a single column on narrow screens, +% and fan out into three columns on wide screens. However, it always remains within +% its parent grid column. +::::{grid} 1 1 3 3 + +:::{div} + +- [About](https://mystmd.org/overview/ecosystem) +- [Guide](https://mystmd.org/guide) +- [Sandbox](https://mystmd.org/sandbox) + ::: + +:::{div} + +- A second column! +- With multiple entries + ::: + +:::{div} + +- And what about a third + ::: + +:::: + +::::: diff --git a/myst.yml b/myst.yml new file mode 100644 index 0000000..9172270 --- /dev/null +++ b/myst.yml @@ -0,0 +1,40 @@ +# See docs at: https://mystmd.org/guide/frontmatter +version: 1 +project: + id: ee007168-b9a5-4dba-8823-1639a4aeb956 + title: Hello Landing Pages + abbreviations: + CSS: Cascading Style Sheet + toc: + - file: content/_index.md + - file: content/footer.md + - title: About + children: + - file: content/about/governance.md + - file: content/about/_index.md + - file: content/about/roadmap.md + - title: Analytics + children: + - file: content/analytics/index.md + - title: Community + children: + - file: content/community/index.md + - title: Github + children: + - file: content/github/index.md + - title: Utilities + children: + - file: content/utilities/index.md + + +site: + template: book-theme + title: Scientific Python Tools and Services + options: + favicon: favicon.ico + logo: site_logo.png + logo_text: Scientific Python Tools and Services + style: ./assets/css/custom.css + + parts: + footer: ./content/footer.md From 145fd85553d4c81b5742e106e718b152211e9c83 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Tue, 21 Oct 2025 16:37:18 -0700 Subject: [PATCH 02/29] continue port to myst --- assets/css/custom.css | 4 +-- config.yaml | 64 -------------------------------------- content/_index.md | 62 +++++++++++++++++------------------- content/footer.md | 23 +++----------- myst.yml | 7 ++--- static/images/favicon.ico | Bin 0 -> 15086 bytes 6 files changed, 37 insertions(+), 123 deletions(-) delete mode 100644 config.yaml create mode 100644 static/images/favicon.ico diff --git a/assets/css/custom.css b/assets/css/custom.css index 9c5e964..5dfaa7a 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -1,3 +1,3 @@ -.navbar-logo-text { - font-family: "Lato"; +.myst-card-header { + font-size: 110%; } diff --git a/config.yaml b/config.yaml deleted file mode 100644 index d27be8a..0000000 --- a/config.yaml +++ /dev/null @@ -1,64 +0,0 @@ -baseURL: "https://tools.scientific-python.org/" -title: "Tools" -theme: scientific-python-hugo-theme -disableKinds: ["term", "taxonomy"] - -markup: - highlight: - noClasses: false - -params: - description: "Tools and services for scientific Python developers and packages." - images: - - /images/logo.svg - navbarlogo: - image: logo.svg - text: Scientific Python Tools and Services - link: / - navbar: - - title: Home - url: https://scientific-python.org/ - - title: Blog - url: https://blog.scientific-python.org - - title: Learn - url: https://learn.scientific-python.org - - title: Tools - url: / - footer: - logo: logo.svg - socialmediatitle: "" - socialmedia: - - link: https://github.com/scientific-python/ - icon: github - - link: https://www.youtube.com/c/ScientificPython-org - icon: youtube - - link: https://fosstodon.org/@scientific_python - icon: mastodon - - link: https://discuss.scientific-python.org - icon: discourse - - link: https://discord.com/invite/vur45CbwMz - icon: discord - - quicklinks: - column1: - title: "" - links: - - text: About - link: /about/ - - text: Roadmap - link: /about/roadmap/ - - text: Code of Conduct - link: https://scientific-python.org/code_of_conduct/ - column2: - title: "Maintainers" - links: - - text: SPECs - link: https://scientific-python.org/specs/ - - text: Summits - link: https://scientific-python.org/summits/ - - text: Calendars - link: https://scientific-python.org/calendars/ - column3: - links: - - text: Press kit - link: https://scientific-python.org/press-kit/ diff --git a/content/_index.md b/content/_index.md index 4e83f16..99435dd 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,5 +1,7 @@ --- -title: +site: + hide_outline: true + hide_footer_links: true --- # Community Tools & Services @@ -7,50 +9,44 @@ title: We maintain a collection of tools that help projects across the ecosystem. We also offer a small selection of hosted services. -{{< grid columns="1 1 1 5" >}} +::::{grid} 1 1 2 2 + +:::{card} +:header: **Web** +:link: https://theme.scientific-python.org -[[item]] -type = 'card' -title = 'For Web' -link = 'https://theme.scientific-python.org' -body = ''' A [Hugo](https://gohugo.io/) theme used by [NumPy](https://numpy.org/), [SciPy](https://scipy.org/), [Scientific Python](https://scientific-python.org/), and other sites. -''' +::: + +:::{card} +:header: **Development** +:link: /utilities -[[item]] -type = 'card' -title = 'For Development' -link = '/utilities' -body = ''' Python developer tools used by packages across the ecosystem. -''' +::: -[[item]] -type = 'card' -title = 'For Organization' -link = '/community' -body = ''' +:::{card} +:header: **Organization** +:link: /community Calendar, forum, and other services for organizing the community. -''' +::: + +::: {card} +:header: **Insight** +:link: /analytics -[[item]] -type = 'card' -title = 'For Insight' -link = '/analytics' -body = ''' Through analytics, to better understand project development and community health. -''' +::: + +:::{card} +:header: **GitHub** +:link: /github -[[item]] -type = 'card' -title = 'For GitHub' -link = '/github' -body = ''' GitHub Actions and bots for automating various aspects of project development. -''' +::: -{{< /grid >}} +:::: ### New tools diff --git a/content/footer.md b/content/footer.md index 59b8a87..8cf9934 100644 --- a/content/footer.md +++ b/content/footer.md @@ -14,14 +14,12 @@ ::::{div} -# Landing Pages - -```{image} https://jupyterbook.org/en/stable/_images/logo-square.svg -:width: 50px +```{image} ./static/images/logo.svg +:width: 60px :align: left ``` -This is a description of our project. And a [link to its homepage](https://github.com/jupyter-book/example-landing-pages). +Community-driven and community-owned initiative dedicated to building a robust, sustainable ecosystem for statistical software in Python. :::: @@ -39,20 +37,7 @@ This is a description of our project. And a [link to its homepage](https://githu :::{div} -- [About](https://mystmd.org/overview/ecosystem) -- [Guide](https://mystmd.org/guide) -- [Sandbox](https://mystmd.org/sandbox) - ::: - -:::{div} - -- A second column! -- With multiple entries - ::: - -:::{div} - -- And what about a third +- [About](/about) ::: :::: diff --git a/myst.yml b/myst.yml index 9172270..ac6f2f9 100644 --- a/myst.yml +++ b/myst.yml @@ -2,12 +2,10 @@ version: 1 project: id: ee007168-b9a5-4dba-8823-1639a4aeb956 - title: Hello Landing Pages abbreviations: CSS: Cascading Style Sheet toc: - file: content/_index.md - - file: content/footer.md - title: About children: - file: content/about/governance.md @@ -25,14 +23,13 @@ project: - title: Utilities children: - file: content/utilities/index.md - site: template: book-theme title: Scientific Python Tools and Services options: - favicon: favicon.ico - logo: site_logo.png + favicon: ./static/images/favicon.ico + logo: ./static/images/logo.svg logo_text: Scientific Python Tools and Services style: ./assets/css/custom.css diff --git a/static/images/favicon.ico b/static/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6f3ca0b62660fa3a0af2debe30d585aeab6ebb96 GIT binary patch literal 15086 zcmc&*2Ut|c7T!G5UQDq?>|(_pR1i=T(HL8diim{;B%%ZxV2NU1jUu8Z78HprO)QXD zq9n!=#S$AuqoRl!h+q<9H)2K3JO99}mt}X^Rg-tWZ}v<%bIw2I&YhWaR;7ALRZdl* zf{LlN%I{^Bs+~%uvbHWtZ{YkW&a<^GPB&7iy1lDXHDMku;u=NyOjIi7o5W<4NErSJ z3J)0PI;~rlt#`dgHTu3mHT#vP)}JisHJ?4c?VJ_>Za7P?l$XrDe@w*iOC97;To3m((?+)P@%HH^9jIOyawaj#ym z`R7C-gDbqs;be)51`thhap&5#yeq$Ef){mAH#bdtJ1K&+vr{= z-^Ta0ZJBlb{Lxj9l{|vNx1s zc6~vP0WHXFYI{mM97ZROtfXUymg~zpbvZRE1oclGSwS6QJjpS}Lj(uy5V9Inf$EH? zE7EOO^dl!O_umvq%YK|mIjO5DFFi6i`&e|fOKFj}#%~@^4%)%gBG{Q4ef}QR^sY`d zy{b|5!4;|QXVzpN;ii)f9cy;ay>}^HTLZJG|2p3zZCAQb(^*c`d~PRdG|86QEc=9P zrrJ?6O$TZm)P|bQbfo%$O{v-Jj?|uUY)B3ni@I)!Zsk~BhGUGH+J^Nb+b?@klj#oR z80|rIhS#Q+^Se;1(5_tHNtB}<-Pd@ZLtXhaPjq|LA;x1JaM`bNW&V$f>dbJYh7(&c zmOlFU<7Hh*fx{_U-IC>Oc8DCzZB?`G&eV2=3)zRe7PsAVQM)+LdMe_jz}UlOPH~={ z7|UU9gkfP1Q9Duntx2{R-80tMmkUEOCxngsqFbQTUzL0QN4HMsuU-1-D!s~4XMek^bK|B3nGkKVNE11Eu=D6PxAbLO zn(pFncT=OCJkX>vy+U4;e0hz1_{X)&bmDv(?Kql5@jJ8>x^@ovFBwiBPyB!y53w@4 zKdSfnFHH^~`;DHOQc2eP5{GcHD4Owe`|d4D&q|@V?W+mj7oHO)F?q~!!2)e`Msr!H z8ETEPJSluad(w80qi-{#IM!@my{S~gIfI3I7!_<`0s6$)JPG@D5u~Y=7&u*x!*vuq z?}KmU(76K)>aRDTBIW$?D^y(LU?nkdJPetZKKCBvQ{G>f=-|m@ib@I>bF<;VDy4K| zjqv)Szt}S-RDCHJF1P zN46sGd2Y05{ao69WGmgcW3X%QvZ6|%E4}9VFBp)!A~E>fr7PKgO69v#whQ@FRt1Rp zy=8wQ?M>S$_91DRN9lN0D)uU3Kk?h2*>orWwybKBLPuD_ymS5wTyvp2H&we1-|15a zmQvz|aim=vczwf`;IrFyM<1WEa#Y@g9?({ z^!b#pX;J(ro&Mw>=9Hz!Sotw-|0+ZJuy2js{RJiL38t~UH&rK$B<-#_wBY-x)OF3L zV*e-Ke{Zc9h5a~-PV+wb?6Fl8yK63ewS5L1KD5l3-lF{U$d#+_8vKSaMUMd(mFa%d9_7i2-evG7M4d zsjKvRy8bns&{D_Wc6lFaG0$0-R@UzkKTPydv93$djWzgkdgL&v{{oNgh;PS=`fXTN z(-{t8-)#F;FR^#W-q&j2JFNe8s?_tPqCV)UBI}V2s4?&B-&@$tpl*p{_0HnCk{US_ zy7BPZ^%Cnpl*N5CaD$(&zC*NH?9rQP+EZP>`c%cGsLeG!tBU=6l|HZ1yZzswrd)0{ z;4S8@{f-^?ZS*N|OP1Cl1{@_B2-u{@+2CVla zblZPDP@I!m@Oi1hxaJ~_{N{7sC*?RJ&uZY?RC`1no$Ojet5LhvgUN1Xf3gW`OZCUv zuzq`y27l+cq4axN^!v(oBkr(zh!x5aMBDg`)n<8L-8{nC3uE4T$;Ucfm>ZRP{fFxN zH__!a;CQW1Yfvl29KbmVXS8-vL#TWFuoL>aW!f=XJ%aWBC2^o15XX2noST^V>BqCGvOK0~xsoM(A?UX(JM&F;YU)S~a@xXW{F zZJ(M{rSEHm_YwSp>-g5? zb98$#&fvFQ+*6F3e%<2qZJcA3x{Sp|KSX=>a)|W^;Qly{`f}_sj#9q$sD@%q!2H1c zl=+f6#dst+MSJvU7v9-c8F1TW7#{E`qB5wbaDK)W30z`b7fn~SNxt}t$4&CkLT1XzE|kp zK|8oc$F=SiP2NEmP)5n+h(uTU zINP`MtnnoM<4pz-*lbU{q(TlK~VuqMs#PfFBXYuoFz&%k(2tl zYx*2-IQZQsa=&9K<-39>gJynw+;4$LiF0QOMK3U+(P;h?xOBv_4@TSmZ7J5W`1x#q zH(<%|rMQ=Sfsl2grhFaf$>+yAW#M?z|IsWx!=>l|R``q!RaDLp)~srMUM~|rY_nHx=%(~z#%8bI2F^3OPQIwN z;J)y{aw7p-8GI7H;1AFXWH+0vh63SsEe$MPB3oN0y(}vv^_v)|%Z~J)@t=}Ch zY{4OGX3?aTV`zBD5c*`2v)OhL?D?F>v=QHu3wc?l;B=L3V5Uu`7*PhB$k*R3C(k)9 zWaraZ*y#3-Y;zI{GAo;gzWt%_7J{_WV-{#rqT-H-liei1{Hxgw6XB2>0PX9@!?w19)&Bj&LFG99_Pe zOAj92H>ASsJYZb1R+9zHz<%~nSns_*%%-r_!)WyE56N>%hkU&@2nyo?1;3Lc$i3=x|`GyQ^H@;s+@%pWtmE3Jt1Az%h}w&#b+ zJ2pvwV_W-?-67)MfBDxwk0av7<;8CaIXypS(s}opy|3{*b&K~q56)dWLs& z!QHbtzvS#s+n$k>yygUSK__&>E&wdRB=Jcqd1!F!~? z4ozRw?}g!(dYE3}@Jx0Vg^W_TF7kap`dhZa+NC_@rbd?HGbO{!GGM=BCa*>M8@Rru z!*AzR!=kzt;JL-Tmn`5n8%MLjm2~*uA70PwdKO~IVg5Z9)-el9YmcYr$F6>j&8qVZ zICfo5)h>I6dbIn%mz0#eu*ff~*iOs#3({6OWJ&PXGb)uH! zrfXeI^Jpn6B|_NYg0@VgFMpU$bG8Ku-!j~b_Fg-jLfCc(TV99Qr~YWT!8 zzd$`bWu;+Lkk~=1yH~bIM$ffAG;zxWnz40~XwTN9?LqxEVBYs#H$o>L zwlf5M`;*kun(f7~6$;F3JC)c$F`r<^YQ(lfYqohJuJ2gp<@FC;c|>FA9C>;oLN+z@u;{rO8=dG=Mva$EnIZq7*A z7;DU7*pa1ux!#z@!nR(6?cS9?c}4i2N`BbgBz{|keHK2tm3qG{0>%xt%IfOMRBdnt z_TRM<<7+*t0o4y^S^~pI>|62eo{-;w(HMUAf$hL+*cFKZ6t+kB6l30C9TEM@`H}~= zQLOd)_R$vep6;XVRt?bcxA@`%(SF$XnoMseZ0e{Fxpv|Gb$n7jXva8DI&ygVt=zOo zwjddK*fznuzbWfMCguoii0J>CL#>3(SMtE80lo*YtIIq|;ZrQ;6u-Cd4VL-#+!nki zN~~BD;6si6fgd%-8GN!%_xMlwyR8Rd#luX3IBSm#n6HN z#yS8$c_TUtoD<#NEEBwf0XAcnRl=q%Wy9a1WpHPq3mBAs9^ipL4(#7}XXN?=Um;l^ z6uueo(O2e~iaW%*cUHhNFDl+=b+*3TB47QY^#^N=%@jKw4*ZWm`cuHC1NbpVFb2wR zE#4(Vb6;Oqak^0a2f#ekCAjb(0G4sjh+N@=h5tLC9RHs{-{adQ`785XCe~MczeE}H zp$v1+_RFVhf#f$ppP1vDQUbJIqUfFQ^krO&9b?rSS;uXu2Wz>~cSkuk;K6rU_A}mB z_}s|4hA4be*pF+9Lk#PS^%&kh&hv%+-#|7CW664M8q%+ySG9k6u@;GZ9vAp&;cTGK zSDfAs{~D?1pQP{$VVydkDkFHro=(qy#t`-gJgz0&KaX=F<1aAO z2K{rF0iHts=HM@O|JR58$Q&74Dc>$d-xmmfE74YUH18+Eonq88+i5-C`@aHLD0hfg zzsVJB0!?N|BT#7LpF+@CDi!-Pu}70i z#r{U@am4?L0_Fcy<$%8SlqMt1o+OfLkY;ZmNs;_F9u1Tz^d=*%z?Flv0=G!xKVrz| r_6f@El{AO5b?xVT*&nih2<7}kaLNMZj_L%;jI%&V!vQq86X^c{qL|Jv literal 0 HcmV?d00001 From 7e0a4b67f6a7e329717129d5fe561723f55d6c46 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 22 Oct 2025 21:57:09 -0700 Subject: [PATCH 03/29] remove hugo theme git submodule --- .gitmodules | 3 --- themes/scientific-python-hugo-theme | 1 - 2 files changed, 4 deletions(-) delete mode 160000 themes/scientific-python-hugo-theme diff --git a/.gitmodules b/.gitmodules index 230999c..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "themes/scientific-python-hugo-theme"] - path = themes/scientific-python-hugo-theme - url = https://github.com/scientific-python/scientific-python-hugo-theme diff --git a/themes/scientific-python-hugo-theme b/themes/scientific-python-hugo-theme deleted file mode 160000 index 42b638f..0000000 --- a/themes/scientific-python-hugo-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 42b638f37c0f5869a112f0c274d03bc349d1a7b3 From e4aec42dd60c732bff25dddbabd6c8f04aed94b0 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 22 Oct 2025 21:57:39 -0700 Subject: [PATCH 04/29] remove .gitmodules --- .gitmodules | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29..0000000 From a621f500627e3a7fb040c0188b93bc1694f457ef Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 22 Oct 2025 22:03:41 -0700 Subject: [PATCH 05/29] move static css and image assets under content --- {assets/css => content}/custom.css | 0 {static/images => content}/favicon.ico | Bin content/footer.md | 2 +- {static/images => content}/logo.svg | 0 myst.yml | 6 +++--- 5 files changed, 4 insertions(+), 4 deletions(-) rename {assets/css => content}/custom.css (100%) rename {static/images => content}/favicon.ico (100%) rename {static/images => content}/logo.svg (100%) diff --git a/assets/css/custom.css b/content/custom.css similarity index 100% rename from assets/css/custom.css rename to content/custom.css diff --git a/static/images/favicon.ico b/content/favicon.ico similarity index 100% rename from static/images/favicon.ico rename to content/favicon.ico diff --git a/content/footer.md b/content/footer.md index 8cf9934..3fb8cda 100644 --- a/content/footer.md +++ b/content/footer.md @@ -14,7 +14,7 @@ ::::{div} -```{image} ./static/images/logo.svg +```{image} ./logo.svg :width: 60px :align: left ``` diff --git a/static/images/logo.svg b/content/logo.svg similarity index 100% rename from static/images/logo.svg rename to content/logo.svg diff --git a/myst.yml b/myst.yml index ac6f2f9..e9b378d 100644 --- a/myst.yml +++ b/myst.yml @@ -28,10 +28,10 @@ site: template: book-theme title: Scientific Python Tools and Services options: - favicon: ./static/images/favicon.ico - logo: ./static/images/logo.svg + favicon: ./content/favicon.ico + logo: ./content/logo.svg logo_text: Scientific Python Tools and Services - style: ./assets/css/custom.css + style: ./content/custom.css parts: footer: ./content/footer.md From 8986616cec9137e980897780c900b878b2996f80 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 22 Oct 2025 22:08:04 -0700 Subject: [PATCH 06/29] clean up .gitignore --- .gitignore | 167 +---------------------------------------------------- 1 file changed, 3 insertions(+), 164 deletions(-) diff --git a/.gitignore b/.gitignore index 6cca02b..75c50c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,170 +1,9 @@ # Standard -.hugo* *~ -resources/ -public/ .DS_Store -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class +# Vim swap files +*.swp -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -# MyST build outputs +# MyST build artifacts _build From e6760be30fb8073d0380c048abc6bc9b178f7be3 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 22 Oct 2025 22:38:03 -0700 Subject: [PATCH 07/29] simplify content file/directory structure --- content/{analytics/index.md => analytics.md} | 0 content/{community/index.md => community.md} | 0 content/custom.css | 2 ++ content/{github/index.md => github.md} | 0 content/{utilities/index.md => utilities.md} | 0 myst.yml | 16 ++++------------ 6 files changed, 6 insertions(+), 12 deletions(-) rename content/{analytics/index.md => analytics.md} (100%) rename content/{community/index.md => community.md} (100%) rename content/{github/index.md => github.md} (100%) rename content/{utilities/index.md => utilities.md} (100%) diff --git a/content/analytics/index.md b/content/analytics.md similarity index 100% rename from content/analytics/index.md rename to content/analytics.md diff --git a/content/community/index.md b/content/community.md similarity index 100% rename from content/community/index.md rename to content/community.md diff --git a/content/custom.css b/content/custom.css index 5dfaa7a..1d51284 100644 --- a/content/custom.css +++ b/content/custom.css @@ -1,3 +1,5 @@ .myst-card-header { font-size: 110%; + color: revert; } + diff --git a/content/github/index.md b/content/github.md similarity index 100% rename from content/github/index.md rename to content/github.md diff --git a/content/utilities/index.md b/content/utilities.md similarity index 100% rename from content/utilities/index.md rename to content/utilities.md diff --git a/myst.yml b/myst.yml index e9b378d..06a6178 100644 --- a/myst.yml +++ b/myst.yml @@ -11,18 +11,10 @@ project: - file: content/about/governance.md - file: content/about/_index.md - file: content/about/roadmap.md - - title: Analytics - children: - - file: content/analytics/index.md - - title: Community - children: - - file: content/community/index.md - - title: Github - children: - - file: content/github/index.md - - title: Utilities - children: - - file: content/utilities/index.md + - file: content/analytics.md + - file: content/community.md + - file: content/github.md + - file: content/utilities.md site: template: book-theme From 2aee3e1aad484619281cf4a9c674821a0d7cb604 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 23 Oct 2025 01:12:16 -0700 Subject: [PATCH 08/29] consolidate myst site source under site/ directory --- content/custom.css | 5 -- myst.yml | 29 ------- .../about/_index.md => site/about/about.md | 0 {content => site}/about/governance.md | 0 {content => site}/about/roadmap.md | 0 {content => site}/about/tools-team.toml | 0 {content => site}/analytics.md | 0 {content => site}/community.md | 0 {content => site}/favicon.ico | Bin {content => site}/footer.md | 0 {content => site}/github.md | 0 content/_index.md => site/index.md | 0 {content => site}/logo.svg | 0 site/myst.yml | 29 +++++++ site/site.css | 75 ++++++++++++++++++ {content => site}/utilities.md | 0 16 files changed, 104 insertions(+), 34 deletions(-) delete mode 100644 content/custom.css delete mode 100644 myst.yml rename content/about/_index.md => site/about/about.md (100%) rename {content => site}/about/governance.md (100%) rename {content => site}/about/roadmap.md (100%) rename {content => site}/about/tools-team.toml (100%) rename {content => site}/analytics.md (100%) rename {content => site}/community.md (100%) rename {content => site}/favicon.ico (100%) rename {content => site}/footer.md (100%) rename {content => site}/github.md (100%) rename content/_index.md => site/index.md (100%) rename {content => site}/logo.svg (100%) create mode 100644 site/myst.yml create mode 100644 site/site.css rename {content => site}/utilities.md (100%) diff --git a/content/custom.css b/content/custom.css deleted file mode 100644 index 1d51284..0000000 --- a/content/custom.css +++ /dev/null @@ -1,5 +0,0 @@ -.myst-card-header { - font-size: 110%; - color: revert; -} - diff --git a/myst.yml b/myst.yml deleted file mode 100644 index 06a6178..0000000 --- a/myst.yml +++ /dev/null @@ -1,29 +0,0 @@ -# See docs at: https://mystmd.org/guide/frontmatter -version: 1 -project: - id: ee007168-b9a5-4dba-8823-1639a4aeb956 - abbreviations: - CSS: Cascading Style Sheet - toc: - - file: content/_index.md - - title: About - children: - - file: content/about/governance.md - - file: content/about/_index.md - - file: content/about/roadmap.md - - file: content/analytics.md - - file: content/community.md - - file: content/github.md - - file: content/utilities.md - -site: - template: book-theme - title: Scientific Python Tools and Services - options: - favicon: ./content/favicon.ico - logo: ./content/logo.svg - logo_text: Scientific Python Tools and Services - style: ./content/custom.css - - parts: - footer: ./content/footer.md diff --git a/content/about/_index.md b/site/about/about.md similarity index 100% rename from content/about/_index.md rename to site/about/about.md diff --git a/content/about/governance.md b/site/about/governance.md similarity index 100% rename from content/about/governance.md rename to site/about/governance.md diff --git a/content/about/roadmap.md b/site/about/roadmap.md similarity index 100% rename from content/about/roadmap.md rename to site/about/roadmap.md diff --git a/content/about/tools-team.toml b/site/about/tools-team.toml similarity index 100% rename from content/about/tools-team.toml rename to site/about/tools-team.toml diff --git a/content/analytics.md b/site/analytics.md similarity index 100% rename from content/analytics.md rename to site/analytics.md diff --git a/content/community.md b/site/community.md similarity index 100% rename from content/community.md rename to site/community.md diff --git a/content/favicon.ico b/site/favicon.ico similarity index 100% rename from content/favicon.ico rename to site/favicon.ico diff --git a/content/footer.md b/site/footer.md similarity index 100% rename from content/footer.md rename to site/footer.md diff --git a/content/github.md b/site/github.md similarity index 100% rename from content/github.md rename to site/github.md diff --git a/content/_index.md b/site/index.md similarity index 100% rename from content/_index.md rename to site/index.md diff --git a/content/logo.svg b/site/logo.svg similarity index 100% rename from content/logo.svg rename to site/logo.svg diff --git a/site/myst.yml b/site/myst.yml new file mode 100644 index 0000000..c8c37ce --- /dev/null +++ b/site/myst.yml @@ -0,0 +1,29 @@ +# See docs at: https://mystmd.org/guide/frontmatter +version: 1 +project: + id: ee007168-b9a5-4dba-8823-1639a4aeb956 + abbreviations: + CSS: Cascading Style Sheet + toc: + - file: index.md + - title: About + children: + - file: about/about.md + - file: about/governance.md + - file: about/roadmap.md + - file: analytics.md + - file: community.md + - file: github.md + - file: utilities.md + +site: + template: book-theme + title: Scientific Python Tools and Services + options: + favicon: favicon.ico + logo: logo.svg + logo_text: Scientific Python Tools and Services + style: site.css + + parts: + footer: footer.md diff --git a/site/site.css b/site/site.css new file mode 100644 index 0000000..4510e8c --- /dev/null +++ b/site/site.css @@ -0,0 +1,75 @@ +html, +body { + height: 100%; +} +body { + display: flex; + flex-direction: column; +} + +.article.content { + /* Override 100vh from myst-theme:styles/typography.css so content div + * doesn't push the footer offscreen. + */ + min-height: 0vh; + flex: 1 0 auto; +} + +.footer { + /* Make footer "sticky" to page bottom (also the above flex rules), per + * the flexbox strategy described here: + * https://css-tricks.com/couple-takes-sticky-footer/#aa-there-is-flexbox + * and here: + * https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ + * This solution does not require hardcoding a fixed footer height in the + * style rules. + */ + flex-shrink: 0; + background: #013243; + color: white; + padding-left: 2rem; + padding-right: 2rem; + + padding-left: 3.5rem; + padding-right: 3.5rem; + + /* Outer content grid */ + & .outer-grid { + /* spacer, project description, spacer, link columns, spacer */ + grid-template-columns: 3fr 3fr 4fr; + align-items: center; + margin-bottom: 0rem; + + & li { + list-style: none; + } + } + + @media (max-width: 640px) { + & .outer-grid { + grid-template-columns: 1fr; + justify-items: start; + } + } + + /* Heading colours */ + & a, + h1, + h2, + h3, + h4, + h5, + h6 { + color: white; + } + + & h1 { + font-size: 1.25rem; + font-weight: bold; + } +} + +.myst-card-header { + font-size: 110%; + color: revert; +} diff --git a/content/utilities.md b/site/utilities.md similarity index 100% rename from content/utilities.md rename to site/utilities.md From de77e43fdcf2e59bdd761be8f17c4dda70a86cc8 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 23 Oct 2025 01:12:45 -0700 Subject: [PATCH 09/29] remove irrelevant pre-commit items (python stuff) --- .pre-commit-config.yaml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e9e30f6..264e27d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,22 +25,6 @@ repos: files: \.(css|md|yml|yaml) args: [--prose-wrap=preserve] - - repo: https://github.com/psf/black-pre-commit-mirror - rev: fe95161893684893d68b1225356702ca71f8d388 # frozen: 25.9.0 - hooks: - - id: black - - - repo: https://github.com/asottile/blacken-docs - rev: dda8db18cfc68df532abf33b185ecd12d5b7b326 # frozen: 1.20.0 - hooks: - - id: blacken-docs - - - repo: https://github.com/asottile/pyupgrade - rev: 37bfa06d791fd38fb4e54910b36a2ff57641b074 # frozen: v3.20.0 - hooks: - - id: pyupgrade - args: [--py38-plus] - - repo: https://github.com/codespell-project/codespell rev: "63c8f8312b7559622c0d82815639671ae42132ac" # frozen: v2.4.1 hooks: From 846a8b943e7f3685dbcc90e592580cf955058542 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 23 Oct 2025 01:16:21 -0700 Subject: [PATCH 10/29] add super minimal info to README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index f817716..0b7aa5e 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ # tools.scientific-python.org + +This repository hosts the source code for the website https://tools.scientific-python.org. + +The site is implemented with the mystmd book template. + +To run locally: +``` +cd site +myst start +``` From 028c639e8b8a590f0fd95a025d7b8fddbb17b6a6 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 23 Oct 2025 01:43:17 -0700 Subject: [PATCH 11/29] convert /about page with tools team avatars --- site/about/about.md | 48 ++++++++++++++++++++++++-- site/about/tools-team.toml | 69 -------------------------------------- 2 files changed, 46 insertions(+), 71 deletions(-) delete mode 100644 site/about/tools-team.toml diff --git a/site/about/about.md b/site/about/about.md index 26bd47c..9d32470 100644 --- a/site/about/about.md +++ b/site/about/about.md @@ -22,8 +22,52 @@ Community members must adhere to our [code of conduct](https://scientific-python ## People For more information, see our -[governance and decision making process](/about/governance). +[governance and decision making process](/governance). ### Tools / Service Steering Committee -{{< grid file="tools-team.toml" columns="2 3 4 5" />}} +::::{grid} 2 3 4 5 + +:::{card} +:footer: Brigitta Sipőcz +:link: https://github.com/bsipocz +![Brigitta Sipőcz](https://avatars.githubusercontent.com/u/6788290?u=d9a388224b87d55106cb3e6199d02ebc1d8e0553&v=4) +::: + +:::{card} +:footer: M Bussonnier +:link: https://github.com/Carreau +![M Bussonnier](https://avatars.githubusercontent.com/u/335567?v=4) +::: + +:::{card} +:footer: Jake Bowhay +:link: https://github.com/j-bowhay +![Jake Bowhay](https://avatars.githubusercontent.com/u/60778417?u=6272842e4c0946308604a5f54cdaa8e6505adcbe&v=4) +::: + +:::{card} +:footer: Jarrod Millman +:link: https://github.com/jarrodmillman +![Jarrod Millman](https://avatars.githubusercontent.com/u/123428?v=4) +::: + +:::{card} +:footer: Lars Grüter +:link: https://github.com/lagru +![Lars Grüter](https://avatars.githubusercontent.com/u/20140352?u=fa6debadd435c15847d1435c49753f349e2d3526&v=4) +::: + +:::{card} +:footer: Eric Larson +:link: https://github.com/larsoner +![Eric Larson](https://avatars.githubusercontent.com/u/2365790?v=4) +::: + +:::{card} +:footer: Matthew Feickert +:link: https://github.com/matthewfeickert +![Matthew Feickert](https://avatars.githubusercontent.com/u/5142394?u=310e7999b329801a47ebc999c2243fc9f2b32434&v=4) +::: + +:::: diff --git a/site/about/tools-team.toml b/site/about/tools-team.toml deleted file mode 100644 index e8ac8a1..0000000 --- a/site/about/tools-team.toml +++ /dev/null @@ -1,69 +0,0 @@ -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/6788290?u=d9a388224b87d55106cb3e6199d02ebc1d8e0553&v=4"' -alt = 'Avatar of Brigitta Sipőcz' -{{< /image >}} -Brigitta Sipőcz''' -link = 'https://github.com/bsipocz' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/335567?v=4"' -alt = 'Avatar of M Bussonnier' -{{< /image >}} -M Bussonnier''' -link = 'https://github.com/Carreau' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/60778417?u=6272842e4c0946308604a5f54cdaa8e6505adcbe&v=4"' -alt = 'Avatar of Jake Bowhay' -{{< /image >}} -Jake Bowhay''' -link = 'https://github.com/j-bowhay' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/123428?v=4"' -alt = 'Avatar of Jarrod Millman' -{{< /image >}} -Jarrod Millman''' -link = 'https://github.com/jarrodmillman' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/20140352?u=fa6debadd435c15847d1435c49753f349e2d3526&v=4"' -alt = 'Avatar of Lars Grüter' -{{< /image >}} -Lars Grüter''' -link = 'https://github.com/lagru' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/2365790?v=4"' -alt = 'Avatar of Eric Larson' -{{< /image >}} -Eric Larson''' -link = 'https://github.com/larsoner' - -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = 'https://avatars.githubusercontent.com/u/5142394?u=310e7999b329801a47ebc999c2243fc9f2b32434&v=4"' -alt = 'Avatar of Matthew Feickert' -{{< /image >}} -Matthew Feickert''' -link = 'https://github.com/matthewfeickert' From e1913ee085bbb6e795103ceede88cabad7e1bfaa Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 11:33:42 -0700 Subject: [PATCH 12/29] configuration for circleci PR previews --- .circleci/config.yml | 67 ++++++++++++++++++++++++++++++++++ .github/workflows/circleci.yml | 23 ++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 .github/workflows/circleci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..471c294 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,67 @@ +version: 2.1 + +jobs: + build-site: + docker: + - image: cimg/python:3.13 + environment: + SITE_SRC: site + SITE_PATH: ${SITE_SRC}/_build/html + + steps: + - checkout + + - restore_cache: + keys: + - node-cache-v1 + + - restore_cache: + keys: + - pip-cache-{{ checksum "requirements.txt" }} + + - run: + name: Install Node.js + command: | + curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - + sudo apt-get install -y nodejs + + - run: + name: Install mystmd + command: | + npm install mystmd + + - run: + name: Install Python dependencies + command: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + + - save_cache: + key: node-cache-v1 + paths: + - node_modules + + - save_cache: + key: pip-cache-{{ checksum "requirements.txt" }} + paths: + - ~/.cache/pip + + - run: + name: Build site + command: | + export BASE_URL="/output/job/$CIRCLE_WORKFLOW_JOB_ID/artifacts/0/${SITE_PATH}" + + (cd ${SITE_SRC} && npx myst build --html) + + ## Temporary hack to remove unused thebe JS + rm ${SITE_PATH}/*thebe*.js + + - store_artifacts: + path: ${SITE_PATH} + +workflows: + version: 2 + build-and-site: + jobs: + - build-site + diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml new file mode 100644 index 0000000..6fc4191 --- /dev/null +++ b/.github/workflows/circleci.yml @@ -0,0 +1,23 @@ +name: circleci + +on: [status] +permissions: read-all + +jobs: + circleci_artifacts_redirector_job: + runs-on: ubuntu-latest + if: "${{ github.event.context == 'ci/circleci: build-site' }}" + permissions: + statuses: write + name: Run CircleCI artifacts redirector + steps: + - name: GitHub Action step + uses: scientific-python/circleci-artifacts-redirector-action@839631420e45a08af893032e5a5e8843bf47e8ff + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + api-token: ${{ secrets.CIRCLECI_ARTIFACT_REDIRECTOR_TOKEN }} + artifact-path: 0/site/_build/html/index.html + circleci-jobs: build-site + job-title: "--> site preview <--" + domain: circle.scientific-python.dev + From a36e8a3c45845d0caf1d488c634e28e9bc5d856c Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 11:39:43 -0700 Subject: [PATCH 13/29] pre-commit made some changes --- .circleci/config.yml | 1 - .github/workflows/circleci.yml | 1 - .gitignore | 2 ++ .pre-commit-config.yaml | 6 +++--- README.md | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 471c294..b10ba19 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -64,4 +64,3 @@ workflows: build-and-site: jobs: - build-site - diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml index 6fc4191..33316ab 100644 --- a/.github/workflows/circleci.yml +++ b/.github/workflows/circleci.yml @@ -20,4 +20,3 @@ jobs: circleci-jobs: build-site job-title: "--> site preview <--" domain: circle.scientific-python.dev - diff --git a/.gitignore b/.gitignore index 75c50c8..cf9d503 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ # MyST build artifacts _build + +node_modules diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 264e27d..68a8335 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0 + rev: v6.0.0 hooks: - id: check-added-large-files - id: check-ast @@ -19,14 +19,14 @@ repos: - id: trailing-whitespace - repo: https://github.com/pre-commit/mirrors-prettier - rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8 + rev: v4.0.0-alpha.8 hooks: - id: prettier files: \.(css|md|yml|yaml) args: [--prose-wrap=preserve] - repo: https://github.com/codespell-project/codespell - rev: "63c8f8312b7559622c0d82815639671ae42132ac" # frozen: v2.4.1 + rev: "v2.4.1" hooks: - id: codespell args: ["-L", "ist,cant,connexion,multline"] diff --git a/README.md b/README.md index 0b7aa5e..daffa42 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ This repository hosts the source code for the website https://tools.scientific-p The site is implemented with the mystmd book template. To run locally: + ``` cd site myst start From 19a35c2729d924cf1242e53d8c8a103283e208d3 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 11:42:33 -0700 Subject: [PATCH 14/29] remove netlify config --- netlify.toml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 netlify.toml diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index 412c93a..0000000 --- a/netlify.toml +++ /dev/null @@ -1,26 +0,0 @@ -[build.environment] - PYTHON_VERSION = "3.13" - HUGO_VERSION = "0.141.0" - DART_SASS_VERSION = "1.83.4" - DART_SASS_URL = "https://github.com/sass/dart-sass/releases/download/" - -[build] - base = "/" - publish = "public" - command = """\ - export DART_SASS_TARBALL="dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \ - curl -LJO ${DART_SASS_URL}/${DART_SASS_VERSION}/${DART_SASS_TARBALL} && \ - tar -xf ${DART_SASS_TARBALL} && \ - rm ${DART_SASS_TARBALL} && \ - export PATH=/opt/build/repo/dart-sass:$PATH && \ - make html \ - """ - -[context.deploy-preview] - ignore = "false" - -[[plugins]] - package = "netlify-plugin-checklinks" - - [plugins.inputs] - skipPatterns = ['https://fonts.gstatic.com', 'https://fonts.googleapis.com'] From c7c85f6e48ed3b1937af5c498f5e9860659fccb2 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 12:23:05 -0700 Subject: [PATCH 15/29] remove Makefile --- Makefile | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index 98d0559..0000000 --- a/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -.PHONY: help themes html serve clean -.DEFAULT_GOAL := help - -help: - @grep ": ##" Makefile | grep -v grep | tr -d '#' - -themes/scientific-python-hugo-theme: - @if [ ! -d "$<" ]; then \ - echo "*** ERROR: missing theme" ; \ - echo ; \ - echo "It looks as though you are missing the themes directory."; \ - echo "You need to add the scientific-python-hugo-theme as a submodule."; \ - echo ; \ - echo "Please see https://theme.scientific-python.org/user_guide/getstarted/"; \ - echo ; \ - exit 1; \ - fi - -themes: themes/scientific-python-hugo-theme - -TEAMS_DIR = content/about -TEAMS = tools-team -TEAMS_QUERY = python themes/scientific-python-hugo-theme/tools/team_query.py - -$(TEAMS_DIR)/%.toml: - $(TEAMS_QUERY) --org scientific-python --team "$*" > $(TEAMS_DIR)/$*.toml - -teams-clean: - for team in $(TEAMS); do \ - rm -f $(TEAMS_DIR)/$${team}.toml ;\ - done - -teams: ## generates team gallery pages -teams: | teams-clean $(patsubst %,$(TEAMS_DIR)/%.toml,$(TEAMS)) - -html: ## Build site in `./public` -html: themes - hugo - -serve: ## Serve site, typically on http://localhost:1313 -serve: themes - @hugo --printI18nWarnings server - -clean: ## Remove built files -clean: - rm -rf public From 2e22e1c889636fc9b33b3e4f31e256c0ccd438f1 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 12:57:38 -0700 Subject: [PATCH 16/29] update Makefile; add team-query to generate team gallery --- .circleci/config.yml | 15 -------- Makefile | 30 +++++++++++++++ site/about/about.md | 43 +--------------------- site/about/team-query | 85 +++++++++++++++++++++++++++++++++++++++++++ site/about/team.md | 42 +++++++++++++++++++++ 5 files changed, 158 insertions(+), 57 deletions(-) create mode 100644 Makefile create mode 100755 site/about/team-query create mode 100644 site/about/team.md diff --git a/.circleci/config.yml b/.circleci/config.yml index b10ba19..c5f544c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,10 +15,6 @@ jobs: keys: - node-cache-v1 - - restore_cache: - keys: - - pip-cache-{{ checksum "requirements.txt" }} - - run: name: Install Node.js command: | @@ -30,22 +26,11 @@ jobs: command: | npm install mystmd - - run: - name: Install Python dependencies - command: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - save_cache: key: node-cache-v1 paths: - node_modules - - save_cache: - key: pip-cache-{{ checksum "requirements.txt" }} - paths: - - ~/.cache/pip - - run: name: Build site command: | diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c3b0b2a --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +.PHONY: help themes html serve clean +.DEFAULT_GOAL := help + +help: + @grep ": ##" Makefile | grep -v grep | tr -d '#' + +TEAM_DIR = site/about + +$(TEAM_DIR)/team.md: + $(TEAM_DIR)/team-query --org scientific-python --team "tools-team" > $(TEAM_DIR)/team.md + +team-clean: + rm -f $(TEAM_DIR)/team.md ;\ + +team: ## generates team gallery +team: | team-clean $(TEAM_DIR)/team.md + +html: ## Build site in `./site/_build` +html: + cd site; + myst build --html; + +serve: ## Serve site, typically on http://localhost:3000 +serve: + cd site; + myst start; + +clean: ## Remove built files +clean: + rm -rf site/_build diff --git a/site/about/about.md b/site/about/about.md index 9d32470..d87cda9 100644 --- a/site/about/about.md +++ b/site/about/about.md @@ -27,47 +27,6 @@ For more information, see our ### Tools / Service Steering Committee ::::{grid} 2 3 4 5 - -:::{card} -:footer: Brigitta Sipőcz -:link: https://github.com/bsipocz -![Brigitta Sipőcz](https://avatars.githubusercontent.com/u/6788290?u=d9a388224b87d55106cb3e6199d02ebc1d8e0553&v=4) -::: - -:::{card} -:footer: M Bussonnier -:link: https://github.com/Carreau -![M Bussonnier](https://avatars.githubusercontent.com/u/335567?v=4) -::: - -:::{card} -:footer: Jake Bowhay -:link: https://github.com/j-bowhay -![Jake Bowhay](https://avatars.githubusercontent.com/u/60778417?u=6272842e4c0946308604a5f54cdaa8e6505adcbe&v=4) -::: - -:::{card} -:footer: Jarrod Millman -:link: https://github.com/jarrodmillman -![Jarrod Millman](https://avatars.githubusercontent.com/u/123428?v=4) +:::{include} team.md ::: - -:::{card} -:footer: Lars Grüter -:link: https://github.com/lagru -![Lars Grüter](https://avatars.githubusercontent.com/u/20140352?u=fa6debadd435c15847d1435c49753f349e2d3526&v=4) -::: - -:::{card} -:footer: Eric Larson -:link: https://github.com/larsoner -![Eric Larson](https://avatars.githubusercontent.com/u/2365790?v=4) -::: - -:::{card} -:footer: Matthew Feickert -:link: https://github.com/matthewfeickert -![Matthew Feickert](https://avatars.githubusercontent.com/u/5142394?u=310e7999b329801a47ebc999c2243fc9f2b32434&v=4) -::: - :::: diff --git a/site/about/team-query b/site/about/team-query new file mode 100755 index 0000000..26aa2d0 --- /dev/null +++ b/site/about/team-query @@ -0,0 +1,85 @@ +#!/usr/bin/env python +import os +import sys +import argparse +import string + +import requests + + +team_query = string.Template( + """ + query { + organization(login: "$org") { + team(slug: "$team") { + name, + members(first: 100, orderBy: {field: LOGIN, direction: ASC}) { + nodes { + login + name + url + avatarUrl + } + } + } + } + } +""" +) + + +def api(query): + request = requests.post( + "https://api.github.com/graphql", + json={"query": query}, + headers={"Authorization": f"bearer {token}"}, + ) + if request.status_code == 200: + return request.json() + else: + raise RuntimeError(f"Request received HTTP {request.status_code}: {query}") + + +parser = argparse.ArgumentParser(description="Generate team gallery from GitHub") +parser.add_argument("--org", required=True, help="GitHub organization name") +parser.add_argument("--team", required=True, help="Team name in the organization") +args = parser.parse_args() + +org = args.org +team = args.team + +token = os.environ.get("GH_TOKEN", None) +if token is None: + print( + "No token found. Please export a GH_TOKEN with permissions " + "to read team members.", + file=sys.stderr, + ) + sys.exit(-1) + + +resp = api(team_query.substitute(org=org, team=team)) +members = resp["data"]["organization"]["team"]["members"]["nodes"] +team_name = resp["data"]["organization"]["team"]["name"] + +member_template = string.Template( + """\ +[[item]] +type = 'card' +classcard = 'text-center' +body = '''{{< image >}} +src = '${avatarUrl}"' +alt = 'Avatar of ${name}' +{{< /image >}} +${name}''' +link = '${url}' +""" +) + +members_list = [] +for m in members: + m["name"] = m["name"] or m["login"] + members_list.append(member_template.substitute(**m)) + +print("\n".join(members_list).rstrip()) + diff --git a/site/about/team.md b/site/about/team.md new file mode 100644 index 0000000..f09805a --- /dev/null +++ b/site/about/team.md @@ -0,0 +1,42 @@ +:::{card} +:footer: Brigitta Sipőcz +:link: https://github.com/bsipocz +![Brigitta Sipőcz](https://avatars.githubusercontent.com/u/6788290?u=d9a388224b87d55106cb3e6199d02ebc1d8e0553&v=4) +::: + +:::{card} +:footer: M Bussonnier +:link: https://github.com/Carreau +![M Bussonnier](https://avatars.githubusercontent.com/u/335567?v=4) +::: + +:::{card} +:footer: Jake Bowhay +:link: https://github.com/j-bowhay +![Jake Bowhay](https://avatars.githubusercontent.com/u/60778417?u=6272842e4c0946308604a5f54cdaa8e6505adcbe&v=4) +::: + +:::{card} +:footer: Jarrod Millman +:link: https://github.com/jarrodmillman +![Jarrod Millman](https://avatars.githubusercontent.com/u/123428?v=4) +::: + +:::{card} +:footer: Lars Grüter +:link: https://github.com/lagru +![Lars Grüter](https://avatars.githubusercontent.com/u/20140352?u=fa6debadd435c15847d1435c49753f349e2d3526&v=4) +::: + +:::{card} +:footer: Eric Larson +:link: https://github.com/larsoner +![Eric Larson](https://avatars.githubusercontent.com/u/2365790?v=4) +::: + +:::{card} +:footer: Matthew Feickert +:link: https://github.com/matthewfeickert +![Matthew Feickert](https://avatars.githubusercontent.com/u/5142394?u=310e7999b329801a47ebc999c2243fc9f2b32434&v=4) +::: + From df5a8fc1ce66e0e0d8370b5f7c2f8e3747b8aaf0 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Sat, 25 Oct 2025 20:54:31 -0700 Subject: [PATCH 17/29] update team-query script to output mystmd format --- site/about/team-query | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/site/about/team-query b/site/about/team-query index 26aa2d0..573de92 100755 --- a/site/about/team-query +++ b/site/about/team-query @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Cribbed from https://github.com/scientific-python/scientific-python-hugo-theme/blob/main/tools/team_query.py import os import sys import argparse @@ -64,15 +65,11 @@ team_name = resp["data"]["organization"]["team"]["name"] member_template = string.Template( """\ -[[item]] -type = 'card' -classcard = 'text-center' -body = '''{{< image >}} -src = '${avatarUrl}"' -alt = 'Avatar of ${name}' -{{< /image >}} -${name}''' -link = '${url}' +:::{card} +:footer: ${name} +:link: ${url} +![${name}](${avatarUrl}) +::: """ ) From 4b21e543b8f38a601f89ed655ab019e4a4aec378 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Mon, 27 Oct 2025 11:53:04 -0700 Subject: [PATCH 18/29] convert remaining pages --- Makefile | 6 ++-- site/about/about.md | 2 +- site/analytics.md | 21 +++++------ site/community.md | 28 ++++++--------- site/github.md | 88 ++++++++++++++++++--------------------------- site/utilities.md | 52 +++++++++++---------------- 6 files changed, 76 insertions(+), 121 deletions(-) diff --git a/Makefile b/Makefile index c3b0b2a..39922f0 100644 --- a/Makefile +++ b/Makefile @@ -17,13 +17,11 @@ team: | team-clean $(TEAM_DIR)/team.md html: ## Build site in `./site/_build` html: - cd site; - myst build --html; + (cd site; myst build --html;) serve: ## Serve site, typically on http://localhost:3000 serve: - cd site; - myst start; + (cd site; myst start;) clean: ## Remove built files clean: diff --git a/site/about/about.md b/site/about/about.md index d87cda9..2cb8923 100644 --- a/site/about/about.md +++ b/site/about/about.md @@ -26,7 +26,7 @@ For more information, see our ### Tools / Service Steering Committee -::::{grid} 2 3 4 5 +::::{grid} 2 2 3 3 :::{include} team.md ::: :::: diff --git a/site/analytics.md b/site/analytics.md index b0d7c3b..bafb933 100644 --- a/site/analytics.md +++ b/site/analytics.md @@ -2,24 +2,19 @@ title: "Analytics" --- -{{< grid columns="1 2 2 2" >}} +::::{grid} 1 2 2 2 -[[item]] -type = 'card' -header = '[devstats.scientific-python.org](https://devstats.scientific-python.org)' -body = ''' +:::{card} +:header: [devstats.scientific-python.org](https://devstats.scientific-python.org) We generate developer statistics for various core packages using the [devstats](https://github.com/scientific-python/devstats) tool. [Data releases](https://github.com/scientific-python/devstats-data/releases) are made weekly. +::: -''' - -[[item]] -type = 'card' -header = '[views.scientific-python.org](https://views.scientific-python.org)' -body = ''' +:::{card} +:header: [views.scientific-python.org](https://views.scientific-python.org) A hosted plausible instance where library authors can track website visits. You can [enable this service](https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/analytics.html#analytics-and-usage-services) in your pydata-sphinx-theme settings. -''' +::: -{{< /grid >}} +:::: diff --git a/site/community.md b/site/community.md index f094cfc..14e2b89 100644 --- a/site/community.md +++ b/site/community.md @@ -2,29 +2,23 @@ title: "Community & organization" --- -{{< grid columns="1 2 2 3" >}} +::::{grid} 1 2 2 3 -[[item]] -type = 'card' -header = '[yaml2ics](https://github.com/scientific-python/yaml2ics)' -body = ''' +:::{card} +:header:[yaml2ics](https://github.com/scientific-python/yaml2ics) Convert plain-text descriptions of calendar events into ICS files that can be loaded into Google Calendar etc. Used to host the Scientific Python [community calendars](https://scientific-python.org/calendars). -''' +::: -[[item]] -type = 'card' -header = '[discuss.scientific-python.org](https://discuss.scientific-python.org)' -body = ''' +:::{card} +:header:[discuss.scientific-python.org](https://discuss.scientific-python.org) A Discourse discussion forum for the Scientific Python developer community. Also see the [Scientific Python blog](https://blog.scientific-python.org). -''' +::: -[[item]] -type = 'card' -header = '[vault-template](https://github.com/scientific-python/vault-template)' -body = ''' +:::{card} +:header:[vault-template](https://github.com/scientific-python/vault-template) A GPG-based password vault. See also [SPEC 6](https://github.com/scientific-python/specs/pull/168). -''' +::: -{{< /grid >}} +:::: diff --git a/site/github.md b/site/github.md index aa4e257..7530d7e 100644 --- a/site/github.md +++ b/site/github.md @@ -6,84 +6,64 @@ title: Github Actions and Bots The following GitHub actions provide workflows that simplify various developer tasks. -{{< grid columns="1 2 2 3" >}} +::::{grid}1 2 2 3 -[[item]] -type = 'card' -header = '[upload-nightly-action](https://github.com/scientific-python/upload-nightly-action)' -body = ''' +:::{card} +:header: [upload-nightly-action](https://github.com/scientific-python/upload-nightly-action) Uploads nightly builds to the [scientific-python conda channel](https://anaconda.org/scientific-python-nightly-wheels) as described in [SPEC4](https://scientific-python.org/specs/spec-0004/). -''' +::: -[[item]] -type = 'card' -header = '[attach-next-milestone-action](https://github.com/scientific-python/attach-next-milestone-action)' -body = ''' +:::{card} +:header: [attach-next-milestone-action](https://github.com/scientific-python/attach-next-milestone-action) When a PR is merged, attach it to the next upcoming milestone. -''' +::: -[[item]] -type = 'card' -header = '[action-check-changelogfile](https://github.com/scientific-python/action-check-changelogfile)' -body = ''' +:::{card} +:header: [action-check-changelogfile](https://github.com/scientific-python/action-check-changelogfile) Ensure that added changelog entries conform to certain rules. -''' +::: -[[item]] -type = 'card' -header = '[action-towncrier-changelog](https://github.com/scientific-python/action-towncrier-changelog)' -body = ''' +:::{card} +:header: [action-towncrier-changelog](https://github.com/scientific-python/action-towncrier-changelog) Ensure that added changelog entries conform to certain rules. -''' +::: -[[item]] -type = 'card' -header = '[reverse-dependency-testing](https://github.com/scientific-python/reverse-dependency-testing)' -body = ''' +:::{card} +:header: [reverse-dependency-testing](https://github.com/scientific-python/reverse-dependency-testing) Query the conda-forge dependency tree and run test suites for packages that depend on your package. -''' +::: -[[item]] -type = 'card' -header = '[sync-teams-action](https://github.com/scientific-python/sync-teams-action)' -body = ''' +:::{card} +:header: [sync-teams-action](https://github.com/scientific-python/sync-teams-action) Manage teams and team membership for the Scientific Python GitHub organization. -''' +::: -[[item]] -type = 'card' -header = '[circleci-artifacts-redirector-action](https://github.com/scientific-python/circleci-artifacts-redirector-action)' -body = ''' +:::{card} +:header: [circleci-artifacts-redirector-action](https://github.com/scientific-python/circleci-artifacts-redirector-action) Add a GitHub status link directly to a CircleCI artifact. -''' +::: -[[item]] -type = 'card' -header = '[devstats-query-action](https://github.com/scientific-python/devstats-query-action)' -body = ''' +:::{card} +:header: [devstats-query-action](https://github.com/scientific-python/devstats-query-action) Download devstats for one or more GitHub repositories as an artifact. -''' +::: -[[item]] -type = 'card' -header = '[issue-from-pytest-log-action](https://github.com/scientific-python/issue-from-pytest-log-action)' -body = ''' +:::{card} +:header: [issue-from-pytest-log-action](https://github.com/scientific-python/issue-from-pytest-log-action) Create an issue for failed tests from a `pytest-reportlog` file or update an existing one if it already exists. -''' +::: -{{< /grid >}} +:::: ## Bots The following bots for GitHub provide workflows that simplify various developer tasks. -{{< grid columns="1 2 2 3" >}} +::::{grid} 1 2 2 3 -[[item]] -type = 'card' -header = '[MeeseeksDev / Lumberbot (App)](https://github.com/scientific-python/MeeseeksDev)' -body = ''' +:::{card} +:header: [MeeseeksDev / Lumberbot (App)](https://github.com/scientific-python/MeeseeksDev) A stateless GitHub bot that can backport PRs and perform other repository actions. -''' +::: -{{< /grid >}} +:::: diff --git a/site/utilities.md b/site/utilities.md index 90a55d5..b5003c5 100644 --- a/site/utilities.md +++ b/site/utilities.md @@ -5,50 +5,38 @@ title: "Developer Utilities" The following Python packages provide functionality widely usable by packages across the ecosystem. Also see to the [Scientific Python Developer Guide](https://learn.scientific-python.org/development/). -{{< grid columns="1 2 2 3" >}} +::::{grid} 1 2 2 3 -[[item]] -type = 'card' -header = '[lazy-loader](https://github.com/scientific-python/lazy-loader/)' -body = ''' +:::{card} +:header: [lazy-loader](https://github.com/scientific-python/lazy-loader/) Implements lazy loading as described in [SPEC1](https://scientific-python.org/specs/spec-0001/). -''' +::: -[[item]] -type = 'card' -header = '[spin](https://github.com/scientific-python/spin)' -body = ''' +:::{card} +:header: [spin](https://github.com/scientific-python/spin) **S**cientific **P**ython **IN**cantations: an extendible tool that provides uniform aliases for build tasks across the ecosystem (`spin build`, `spin docs`, etc.). -''' +::: -[[item]] -type = 'card' -header = '[pytest-doctestplus](https://github.com/scientific-python/pytest-doctestplus)' -body = ''' +:::{card} +:header: [pytest-doctestplus](https://github.com/scientific-python/pytest-doctestplus) A plugin for the pytest framework that provides advanced doctest support and enables the testing of text file formats. -''' +::: -[[item]] -type = 'card' -header = '[repo-review](https://github.com/scientific-python/repo-review)' -body = ''' +:::{card} +:header: [repo-review](https://github.com/scientific-python/repo-review) A framework for building checks designed to check to see if a repository follows guideline. -''' +::: -[[item]] -type = 'card' -header = '[docstub](https://github.com/scientific-python/docstub/)' -body = ''' +:::{card} +:header: [docstub](https://github.com/scientific-python/docstub/) A tool for generating Python stub files from docstrings. -''' +::: -[[item]] -type = 'card' -header = '[changelist](https://github.com/scientific-python/changelist/)' -body = ''' +:::{card} +:header: [changelist](https://github.com/scientific-python/changelist/) A tool for automating release notes. -''' +::: -{{< /grid >}} +:::: From 10f36d32d12066af5bb5ee38633fca290e1ca3e9 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Mon, 27 Oct 2025 13:26:46 -0700 Subject: [PATCH 19/29] tweak layout; add footer links --- site/footer.md | 30 ++++++++++++++---------------- site/index.md | 5 +---- site/myst.yml | 4 ++++ site/site.css | 7 +++++++ 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/site/footer.md b/site/footer.md index 3fb8cda..01b7c7a 100644 --- a/site/footer.md +++ b/site/footer.md @@ -10,25 +10,12 @@ :::::{grid} 3 3 5 5 :class: outer-grid col-screen - - -::::{div} - -```{image} ./logo.svg +::::{image} ./logo.svg :width: 60px :align: left -``` - -Community-driven and community-owned initiative dedicated to building a robust, sustainable ecosystem for statistical software in Python. -:::: - - - -::::{div} :::: - % This a _second_ grid embedded within the first one, to create nicer % responsive design experience. This grid will have a single column on narrow screens, % and fan out into three columns on wide screens. However, it always remains within @@ -36,9 +23,20 @@ Community-driven and community-owned initiative dedicated to building a robust, ::::{grid} 1 1 3 3 :::{div} - - [About](/about) - ::: +- [Roadmap](/roadmap) +- [Code of Conduct](https://scientific-python.org/code_of_conduct/) +::: + +:::{div} +- [SPECs](https://scientific-python.org/specs/) +- [Summits](https://scientific-python.org/summits/) +- [Calendars](https://scientific-python.org/calendars/) +::: + +:::{div} +- [Press Kit](https://scientific-python.org/press-kit/) +::: :::: diff --git a/site/index.md b/site/index.md index 99435dd..263b2dd 100644 --- a/site/index.md +++ b/site/index.md @@ -1,10 +1,7 @@ --- -site: - hide_outline: true - hide_footer_links: true +title: "Community Tools & Services" --- -# Community Tools & Services We maintain a collection of tools that help projects across the ecosystem. We also offer a small selection of hosted services. diff --git a/site/myst.yml b/site/myst.yml index c8c37ce..ae6dcf2 100644 --- a/site/myst.yml +++ b/site/myst.yml @@ -20,6 +20,10 @@ site: template: book-theme title: Scientific Python Tools and Services options: + hide_outline: true + hide_toc: true + #hide_title_block: true + hide_footer_links: true favicon: favicon.ico logo: logo.svg logo_text: Scientific Python Tools and Services diff --git a/site/site.css b/site/site.css index 4510e8c..7cb9fe8 100644 --- a/site/site.css +++ b/site/site.css @@ -73,3 +73,10 @@ body { font-size: 110%; color: revert; } + +/* + * Hide the "Download" icon in the frontmatter. + */ +#skip-to-frontmatter > .items-center { + display: none; +} From bac88a4ab96d54098dff38723d704ea5f54bdf46 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Tue, 4 Nov 2025 19:46:40 -0800 Subject: [PATCH 20/29] implement PR feedback --- .gitignore | 171 ++++++++++++++++++++++- .pre-commit-config.yaml | 6 +- site/about/{team-query => team_query.py} | 0 3 files changed, 171 insertions(+), 6 deletions(-) rename site/about/{team-query => team_query.py} (100%) diff --git a/.gitignore b/.gitignore index cf9d503..a8912ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,176 @@ # Standard +.hugo* *~ +resources/ +public/ .DS_Store -# Vim swap files -*.swp +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock -# MyST build artifacts +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# MyST build outputs _build +# Vim swap files +*.swp + +# Javascript envieonment node_modules diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 68a8335..264e27d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 + rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0 hooks: - id: check-added-large-files - id: check-ast @@ -19,14 +19,14 @@ repos: - id: trailing-whitespace - repo: https://github.com/pre-commit/mirrors-prettier - rev: v4.0.0-alpha.8 + rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8 hooks: - id: prettier files: \.(css|md|yml|yaml) args: [--prose-wrap=preserve] - repo: https://github.com/codespell-project/codespell - rev: "v2.4.1" + rev: "63c8f8312b7559622c0d82815639671ae42132ac" # frozen: v2.4.1 hooks: - id: codespell args: ["-L", "ist,cant,connexion,multline"] diff --git a/site/about/team-query b/site/about/team_query.py similarity index 100% rename from site/about/team-query rename to site/about/team_query.py From 00cd0ff17fdc3a862a9b4430e0ef7956e0edaada Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Wed, 5 Nov 2025 15:07:25 -0800 Subject: [PATCH 21/29] fix make target that runs team-query --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 39922f0..8237fe5 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ help: TEAM_DIR = site/about $(TEAM_DIR)/team.md: - $(TEAM_DIR)/team-query --org scientific-python --team "tools-team" > $(TEAM_DIR)/team.md + $(TEAM_DIR)/team_query.py --org scientific-python --team "tools-team" > $(TEAM_DIR)/team.md team-clean: rm -f $(TEAM_DIR)/team.md ;\ From 73cc2484ee41ab3b44f4c7803dedb8454669f8c5 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 4 Dec 2025 08:09:09 -0800 Subject: [PATCH 22/29] simplify sticky footer css --- site/site.css | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/site/site.css b/site/site.css index 7cb9fe8..998b6da 100644 --- a/site/site.css +++ b/site/site.css @@ -2,34 +2,22 @@ html, body { height: 100%; } -body { - display: flex; - flex-direction: column; -} .article.content { /* Override 100vh from myst-theme:styles/typography.css so content div * doesn't push the footer offscreen. */ min-height: 0vh; - flex: 1 0 auto; } -.footer { - /* Make footer "sticky" to page bottom (also the above flex rules), per - * the flexbox strategy described here: - * https://css-tricks.com/couple-takes-sticky-footer/#aa-there-is-flexbox - * and here: - * https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ - * This solution does not require hardcoding a fixed footer height in the - * style rules. +footer { + /* Make footer "sticky" to page bottom as described here: + * https://css-tricks.com/a-clever-sticky-footer-technique/ */ - flex-shrink: 0; + position: sticky; + top: 100vh; background: #013243; color: white; - padding-left: 2rem; - padding-right: 2rem; - padding-left: 3.5rem; padding-right: 3.5rem; From 4df23caaaf239810e30c77cec717da3cfb9fbe9a Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 4 Dec 2025 19:16:31 -0800 Subject: [PATCH 23/29] simplify internal links --- site/about/about.md | 2 +- site/footer.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/site/about/about.md b/site/about/about.md index 2cb8923..d6ccc6a 100644 --- a/site/about/about.md +++ b/site/about/about.md @@ -22,7 +22,7 @@ Community members must adhere to our [code of conduct](https://scientific-python ## People For more information, see our -[governance and decision making process](/governance). +[governance and decision making process](governance). ### Tools / Service Steering Committee diff --git a/site/footer.md b/site/footer.md index 01b7c7a..754b0e8 100644 --- a/site/footer.md +++ b/site/footer.md @@ -23,8 +23,8 @@ ::::{grid} 1 1 3 3 :::{div} -- [About](/about) -- [Roadmap](/roadmap) +- [About](about) +- [Roadmap](roadmap) - [Code of Conduct](https://scientific-python.org/code_of_conduct/) ::: From 87c8e78305223a3fa499ec86a46e83cfb0840a7c Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 4 Dec 2025 19:20:04 -0800 Subject: [PATCH 24/29] fix top nav logo rendering in dark mode --- site/myst.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/site/myst.yml b/site/myst.yml index ae6dcf2..38ad739 100644 --- a/site/myst.yml +++ b/site/myst.yml @@ -26,6 +26,7 @@ site: hide_footer_links: true favicon: favicon.ico logo: logo.svg + logo_dark: logo.svg logo_text: Scientific Python Tools and Services style: site.css From 98383eb34b935bde9579be804afa2b8c815170be Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Thu, 4 Dec 2025 19:20:56 -0800 Subject: [PATCH 25/29] remove site dir from .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index a8912ea..f7c0de5 100644 --- a/.gitignore +++ b/.gitignore @@ -142,9 +142,6 @@ venv.bak/ # Rope project settings .ropeproject -# mkdocs documentation -/site - # mypy .mypy_cache/ .dmypy.json From ba1454f9c98f426d0c02fe3feada56fbaad19145 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Fri, 12 Dec 2025 23:10:57 -0800 Subject: [PATCH 26/29] fix grid spacing --- site/about/about.md | 2 +- site/footer.md | 4 ++-- site/index.md | 2 +- site/myst.yml | 1 + site/site.css | 3 +++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/site/about/about.md b/site/about/about.md index d6ccc6a..ecff8ae 100644 --- a/site/about/about.md +++ b/site/about/about.md @@ -26,7 +26,7 @@ For more information, see our ### Tools / Service Steering Committee -::::{grid} 2 2 3 3 +::::{grid} 2 2 3 5 :::{include} team.md ::: :::: diff --git a/site/footer.md b/site/footer.md index 754b0e8..01b7c7a 100644 --- a/site/footer.md +++ b/site/footer.md @@ -23,8 +23,8 @@ ::::{grid} 1 1 3 3 :::{div} -- [About](about) -- [Roadmap](roadmap) +- [About](/about) +- [Roadmap](/roadmap) - [Code of Conduct](https://scientific-python.org/code_of_conduct/) ::: diff --git a/site/index.md b/site/index.md index 263b2dd..556cf9b 100644 --- a/site/index.md +++ b/site/index.md @@ -6,7 +6,7 @@ title: "Community Tools & Services" We maintain a collection of tools that help projects across the ecosystem. We also offer a small selection of hosted services. -::::{grid} 1 1 2 2 +::::{grid} 1 1 3 5 :::{card} :header: **Web** diff --git a/site/myst.yml b/site/myst.yml index 38ad739..1b07214 100644 --- a/site/myst.yml +++ b/site/myst.yml @@ -18,6 +18,7 @@ project: site: template: book-theme + #template: ../../jupyter-book/myst-theme/.deploy/book/template.yml title: Scientific Python Tools and Services options: hide_outline: true diff --git a/site/site.css b/site/site.css index 998b6da..5b63df9 100644 --- a/site/site.css +++ b/site/site.css @@ -8,6 +8,9 @@ body { * doesn't push the footer offscreen. */ min-height: 0vh; + grid-template-columns: 1fr; + margin-left: 15%; + margin-right: 15%; } footer { From 83d1cc663f381bb440b9eb4b27fb1be1681072a4 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Mon, 15 Dec 2025 17:02:43 -0800 Subject: [PATCH 27/29] hide top nav hamburger menu button at smaller screen widths --- site/site.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/site/site.css b/site/site.css index 5b63df9..d135eff 100644 --- a/site/site.css +++ b/site/site.css @@ -71,3 +71,12 @@ footer { #skip-to-frontmatter > .items-center { display: none; } + +/* + * Hide top nav "hamburger menu" button that shows up at smaller screen widths + * to open primary sidebar. This should probably be implemented in myst-theme, + * switching on `hide_toc` config. + */ +.myst-top-nav-menu-button { + display: none; +} From 7f51e11604757fdce8d244a8b1175994e395899b Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Mon, 15 Dec 2025 17:25:18 -0800 Subject: [PATCH 28/29] remove unnecessary "about" subdirectory --- Makefile | 12 +++++------- site/{about => }/about.md | 0 site/{about => }/governance.md | 0 site/myst.yml | 8 +++----- site/{about => }/roadmap.md | 0 site/{about => }/team.md | 0 site/{about => }/team_query.py | 0 7 files changed, 8 insertions(+), 12 deletions(-) rename site/{about => }/about.md (100%) rename site/{about => }/governance.md (100%) rename site/{about => }/roadmap.md (100%) rename site/{about => }/team.md (100%) rename site/{about => }/team_query.py (100%) diff --git a/Makefile b/Makefile index 8237fe5..a6971f7 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,17 @@ -.PHONY: help themes html serve clean +.PHONY: help html serve clean .DEFAULT_GOAL := help help: @grep ": ##" Makefile | grep -v grep | tr -d '#' -TEAM_DIR = site/about - -$(TEAM_DIR)/team.md: - $(TEAM_DIR)/team_query.py --org scientific-python --team "tools-team" > $(TEAM_DIR)/team.md +team.md: + team_query.py --org scientific-python --team "tools-team" > team.md team-clean: - rm -f $(TEAM_DIR)/team.md ;\ + rm -f team.md team: ## generates team gallery -team: | team-clean $(TEAM_DIR)/team.md +team: | team-clean team.md html: ## Build site in `./site/_build` html: diff --git a/site/about/about.md b/site/about.md similarity index 100% rename from site/about/about.md rename to site/about.md diff --git a/site/about/governance.md b/site/governance.md similarity index 100% rename from site/about/governance.md rename to site/governance.md diff --git a/site/myst.yml b/site/myst.yml index 1b07214..dde85f0 100644 --- a/site/myst.yml +++ b/site/myst.yml @@ -6,11 +6,9 @@ project: CSS: Cascading Style Sheet toc: - file: index.md - - title: About - children: - - file: about/about.md - - file: about/governance.md - - file: about/roadmap.md + - file: about.md + - file: governance.md + - file: roadmap.md - file: analytics.md - file: community.md - file: github.md diff --git a/site/about/roadmap.md b/site/roadmap.md similarity index 100% rename from site/about/roadmap.md rename to site/roadmap.md diff --git a/site/about/team.md b/site/team.md similarity index 100% rename from site/about/team.md rename to site/team.md diff --git a/site/about/team_query.py b/site/team_query.py similarity index 100% rename from site/about/team_query.py rename to site/team_query.py From 940f81788505ee1e48a537ff092110ef8f068736 Mon Sep 17 00:00:00 2001 From: Brian Hawthorne Date: Tue, 16 Dec 2025 13:05:12 -0800 Subject: [PATCH 29/29] remove unused table of contents config from myst.yml --- site/myst.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/site/myst.yml b/site/myst.yml index dde85f0..0b9bc2c 100644 --- a/site/myst.yml +++ b/site/myst.yml @@ -4,15 +4,6 @@ project: id: ee007168-b9a5-4dba-8823-1639a4aeb956 abbreviations: CSS: Cascading Style Sheet - toc: - - file: index.md - - file: about.md - - file: governance.md - - file: roadmap.md - - file: analytics.md - - file: community.md - - file: github.md - - file: utilities.md site: template: book-theme