Spaces:
Running
Running
thibaud frere
commited on
Commit
·
fee9c1e
1
Parent(s):
7f3278b
update
Browse files- .gitattributes +1 -0
- app/.astro/astro/content.d.ts +0 -0
- app/.astro/settings.json +5 -0
- app/.astro/types.d.ts +1 -0
- app/astro.config.mjs +26 -1
- app/package-lock.json +0 -0
- app/package.json +0 -0
- app/src/assets/audio/audio-example.wav +3 -0
- app/src/assets/images/moon.svg +4 -0
- app/src/assets/images/{banner.png → placeholder.png} +2 -2
- app/src/assets/images/sun.svg +12 -0
- app/src/assets/images/visual-vocabulary-poster.png +3 -0
- app/src/components/Aside.astro +18 -0
- app/src/components/Footer.astro +32 -0
- app/src/components/Header.astro +16 -0
- app/src/components/HtmlFragment.astro +34 -2
- app/src/components/Meta.astro +32 -0
- app/src/components/SeoHead.astro +50 -0
- app/src/components/ThemeToggle.astro +36 -0
- app/src/content/bibliography.bib +20 -0
- app/src/fragments/banner.html +0 -0
- app/src/fragments/bar.html +22 -0
- app/src/fragments/heatmap.html +1 -0
- app/src/fragments/line.html +1 -0
- app/src/layouts/ArticleLayout.astro +70 -0
- app/src/pages/article.mdx +195 -0
- app/src/pages/index.astro +180 -143
- app/src/styles/global.scss +243 -0
- package-lock.json +0 -0
- package.json +0 -0
- python/fragments/banner.py +80 -37
- python/fragments/bar.py +8 -23
- python/fragments/heatmap.py +8 -5
- python/fragments/line.py +8 -3
- python/poetry.lock +511 -0
- python/pyproject.toml +20 -0
.gitattributes
CHANGED
@@ -1,3 +1,4 @@
|
|
1 |
app/assets/images/*.png filter=lfs diff=lfs merge=lfs -text
|
2 |
app/src/assets/images/*.png filter=lfs diff=lfs merge=lfs -text
|
3 |
*.png filter=lfs diff=lfs merge=lfs -text
|
|
|
|
1 |
app/assets/images/*.png filter=lfs diff=lfs merge=lfs -text
|
2 |
app/src/assets/images/*.png filter=lfs diff=lfs merge=lfs -text
|
3 |
*.png filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.wav filter=lfs diff=lfs merge=lfs -text
|
app/.astro/astro/content.d.ts
ADDED
File without changes
|
app/.astro/settings.json
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_variables": {
|
3 |
+
"lastUpdateCheck": 1756115195405
|
4 |
+
}
|
5 |
+
}
|
app/.astro/types.d.ts
CHANGED
@@ -1 +1,2 @@
|
|
1 |
/// <reference types="astro/client" />
|
|
|
|
1 |
/// <reference types="astro/client" />
|
2 |
+
/// <reference path="astro/content.d.ts" />
|
app/astro.config.mjs
CHANGED
@@ -1,8 +1,33 @@
|
|
1 |
import { defineConfig } from 'astro/config';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
export default defineConfig({
|
4 |
output: 'static',
|
5 |
-
integrations: []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
});
|
7 |
|
8 |
|
|
|
1 |
import { defineConfig } from 'astro/config';
|
2 |
+
import mdx from '@astrojs/mdx';
|
3 |
+
import remarkMath from 'remark-math';
|
4 |
+
import rehypeKatex from 'rehype-katex';
|
5 |
+
import remarkToc from 'remark-toc';
|
6 |
+
import remarkFootnotes from 'remark-footnotes';
|
7 |
+
import rehypeSlug from 'rehype-slug';
|
8 |
+
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
|
9 |
+
import rehypeCitation from 'rehype-citation';
|
10 |
|
11 |
export default defineConfig({
|
12 |
output: 'static',
|
13 |
+
integrations: [mdx()]
|
14 |
+
,
|
15 |
+
markdown: {
|
16 |
+
remarkPlugins: [
|
17 |
+
[remarkToc, { heading: 'Table of Contents', maxDepth: 3 }],
|
18 |
+
remarkMath,
|
19 |
+
[remarkFootnotes, { inlineNotes: true }]
|
20 |
+
],
|
21 |
+
rehypePlugins: [
|
22 |
+
rehypeSlug,
|
23 |
+
[rehypeAutolinkHeadings, { behavior: 'wrap' }],
|
24 |
+
rehypeKatex,
|
25 |
+
[rehypeCitation, {
|
26 |
+
bibliography: 'src/content/bibliography.bib',
|
27 |
+
linkCitations: true
|
28 |
+
}]
|
29 |
+
]
|
30 |
+
}
|
31 |
});
|
32 |
|
33 |
|
app/package-lock.json
CHANGED
Binary files a/app/package-lock.json and b/app/package-lock.json differ
|
|
app/package.json
CHANGED
Binary files a/app/package.json and b/app/package.json differ
|
|
app/src/assets/audio/audio-example.wav
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:552f71aef82738f9b5c9f1d6be495e0f83cec0eabf485066628badb3283cb4b8
|
3 |
+
size 48830444
|
app/src/assets/images/moon.svg
ADDED
|
app/src/assets/images/{banner.png → placeholder.png}
RENAMED
File without changes
|
app/src/assets/images/sun.svg
ADDED
|
app/src/assets/images/visual-vocabulary-poster.png
ADDED
![]() |
Git LFS Details
|
app/src/components/Aside.astro
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
---
|
3 |
+
<div class="margin-aside">
|
4 |
+
<div class="margin-aside__main">
|
5 |
+
<slot />
|
6 |
+
</div>
|
7 |
+
<aside class="margin-aside__aside">
|
8 |
+
<slot name="aside" />
|
9 |
+
</aside>
|
10 |
+
</div>
|
11 |
+
|
12 |
+
<style>
|
13 |
+
.margin-aside { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 16px; align-items: start; margin: 12px 0; }
|
14 |
+
.margin-aside__aside { background: var(--surface-bg); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px; font-size: 0.9rem; color: var(--text-color); }
|
15 |
+
@media (max-width: 1100px) { .margin-aside { grid-template-columns: 1fr; } }
|
16 |
+
</style>
|
17 |
+
|
18 |
+
|
app/src/components/Footer.astro
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
interface Props {
|
3 |
+
citationText: string;
|
4 |
+
bibtex: string;
|
5 |
+
}
|
6 |
+
const { citationText, bibtex } = Astro.props as Props;
|
7 |
+
---
|
8 |
+
<footer class="distill-footer">
|
9 |
+
<div class="footer-inner">
|
10 |
+
<section class="citation-block">
|
11 |
+
<h3>Citation</h3>
|
12 |
+
<p>For attribution in academic contexts, please cite this work as</p>
|
13 |
+
<textarea readonly class="citation-text">{citationText}</textarea>
|
14 |
+
|
15 |
+
<h4>BibTeX citation</h4>
|
16 |
+
<textarea readonly class="citation-bibtex">{bibtex}</textarea>
|
17 |
+
</section>
|
18 |
+
<section class="references-block">
|
19 |
+
<slot />
|
20 |
+
</section>
|
21 |
+
</div>
|
22 |
+
</footer>
|
23 |
+
|
24 |
+
<style>
|
25 |
+
.distill-footer { margin-top: 40px; border-top: 1px solid var(--border-color); }
|
26 |
+
.footer-inner { max-width: 680px; margin: 0 auto; padding: 24px 16px; }
|
27 |
+
.citation-block h3 { margin: 0 0 8px; }
|
28 |
+
.citation-block h4 { margin: 16px 0 8px; font-size: 14px; text-transform: uppercase; color: var(--muted-color); }
|
29 |
+
.citation-text, .citation-bibtex { width: 100%; min-height: 44px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--surface-bg); padding: 8px; resize: none; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 13px; color: var(--text-color); }
|
30 |
+
</style>
|
31 |
+
|
32 |
+
|
app/src/components/Header.astro
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
interface Props {
|
3 |
+
title: string;
|
4 |
+
description?: string;
|
5 |
+
}
|
6 |
+
const { title, description } = Astro.props as Props;
|
7 |
+
---
|
8 |
+
<section class="hero">
|
9 |
+
<h1 class="hero-title">{title}</h1>
|
10 |
+
<div class="hero-banner">
|
11 |
+
<slot name="banner" />
|
12 |
+
{description && <p class="hero-desc">{description}</p>}
|
13 |
+
</div>
|
14 |
+
</section>
|
15 |
+
|
16 |
+
|
app/src/components/HtmlFragment.astro
CHANGED
@@ -3,7 +3,7 @@ interface Props { src: string }
|
|
3 |
const { src } = Astro.props as Props;
|
4 |
|
5 |
// Charge tous les fragments .html sous src/fragments/** en tant que string (dev & build)
|
6 |
-
const fragments = import.meta.glob('../fragments/**/*.html', {
|
7 |
|
8 |
function resolveFragment(requested: string): string | null {
|
9 |
// Autorise "banner.html" ou "fragments/banner.html"
|
@@ -17,11 +17,43 @@ function resolveFragment(requested: string): string | null {
|
|
17 |
}
|
18 |
|
19 |
const html = resolveFragment(src);
|
|
|
20 |
---
|
21 |
{ html ? (
|
22 |
-
<div set:html={html} />
|
23 |
) : (
|
24 |
<div><!-- Fragment introuvable: {src} --></div>
|
25 |
) }
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
|
|
3 |
const { src } = Astro.props as Props;
|
4 |
|
5 |
// Charge tous les fragments .html sous src/fragments/** en tant que string (dev & build)
|
6 |
+
const fragments = import.meta.glob('../fragments/**/*.html', { query: '?raw', import: 'default', eager: true }) as Record<string, string>;
|
7 |
|
8 |
function resolveFragment(requested: string): string | null {
|
9 |
// Autorise "banner.html" ou "fragments/banner.html"
|
|
|
17 |
}
|
18 |
|
19 |
const html = resolveFragment(src);
|
20 |
+
const mountId = `frag-${Math.random().toString(36).slice(2)}`;
|
21 |
---
|
22 |
{ html ? (
|
23 |
+
<div id={mountId} set:html={html} />
|
24 |
) : (
|
25 |
<div><!-- Fragment introuvable: {src} --></div>
|
26 |
) }
|
27 |
|
28 |
+
<script>
|
29 |
+
// Ré-exécuter les <script> présents dans le fragment injecté (innerHTML n'exécute pas les scripts)
|
30 |
+
const scriptEl = document.currentScript;
|
31 |
+
const mount = scriptEl ? scriptEl.previousElementSibling : null;
|
32 |
+
const execute = () => {
|
33 |
+
if (!mount) return;
|
34 |
+
const scripts = mount.querySelectorAll('script');
|
35 |
+
scripts.forEach(old => {
|
36 |
+
// ignorer les types non exécutables (ex: application/json)
|
37 |
+
if (old.type && old.type !== 'text/javascript' && old.type !== 'module' && old.type !== '') return;
|
38 |
+
if (old.dataset.executed === 'true') return;
|
39 |
+
old.dataset.executed = 'true';
|
40 |
+
if (old.src) {
|
41 |
+
const s = document.createElement('script');
|
42 |
+
Array.from(old.attributes).forEach(({ name, value }) => s.setAttribute(name, value));
|
43 |
+
document.body.appendChild(s);
|
44 |
+
} else {
|
45 |
+
try {
|
46 |
+
// exécuter inline
|
47 |
+
(0, eval)(old.text || '');
|
48 |
+
} catch (e) {
|
49 |
+
console.error('HtmlFragment inline script error:', e);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
});
|
53 |
+
};
|
54 |
+
// Si Plotly n'est pas encore chargé, attendre l'événement load
|
55 |
+
if (window.Plotly) execute();
|
56 |
+
else window.addEventListener('load', execute, { once: true });
|
57 |
+
</script>
|
58 |
+
|
59 |
|
app/src/components/Meta.astro
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
interface Props {
|
3 |
+
title: string;
|
4 |
+
authors?: string[];
|
5 |
+
affiliation?: string;
|
6 |
+
published?: string;
|
7 |
+
}
|
8 |
+
const { title, authors = [], affiliation, published } = Astro.props as Props;
|
9 |
+
---
|
10 |
+
<header class="meta">
|
11 |
+
<div class="meta-container">
|
12 |
+
{authors.length > 0 && (
|
13 |
+
<div class="meta-container-cell">
|
14 |
+
<h3>Authors</h3>
|
15 |
+
<p>{authors.join(', ')}</p>
|
16 |
+
</div>
|
17 |
+
)}
|
18 |
+
{affiliation && (
|
19 |
+
<div class="meta-container-cell">
|
20 |
+
<h3>Affiliation</h3>
|
21 |
+
<p>{affiliation}</p>
|
22 |
+
</div>
|
23 |
+
)}
|
24 |
+
{published && (
|
25 |
+
<div class="meta-container-cell">
|
26 |
+
<h3>Published</h3>
|
27 |
+
<p>{published}</p>
|
28 |
+
</div>
|
29 |
+
)}
|
30 |
+
</div>
|
31 |
+
</header>
|
32 |
+
|
app/src/components/SeoHead.astro
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
interface Props {
|
3 |
+
title: string;
|
4 |
+
description?: string;
|
5 |
+
authors?: string[];
|
6 |
+
published?: string;
|
7 |
+
tags?: string[];
|
8 |
+
image?: string; // URL absolue préférée
|
9 |
+
}
|
10 |
+
|
11 |
+
const { title, description = '', authors = [], published, tags = [], image } = Astro.props as Props;
|
12 |
+
|
13 |
+
const url = Astro.url?.toString?.() ?? '';
|
14 |
+
const site = (Astro.site ? String(Astro.site) : '') as string;
|
15 |
+
|
16 |
+
const ogImage = image && image.length > 0
|
17 |
+
? (image.startsWith('http') ? image : (site ? new URL(image, site).toString() : image))
|
18 |
+
: undefined;
|
19 |
+
|
20 |
+
const jsonLd = {
|
21 |
+
'@context': 'https://schema.org',
|
22 |
+
'@type': 'Article',
|
23 |
+
headline: title,
|
24 |
+
description: description || undefined,
|
25 |
+
datePublished: published || undefined,
|
26 |
+
author: authors.map((name) => ({ '@type': 'Person', name })),
|
27 |
+
keywords: tags.length ? tags.join(', ') : undefined,
|
28 |
+
mainEntityOfPage: url || undefined,
|
29 |
+
image: ogImage ? [ogImage] : undefined,
|
30 |
+
};
|
31 |
+
---
|
32 |
+
<meta name="description" content={description} />
|
33 |
+
<link rel="canonical" href={url} />
|
34 |
+
|
35 |
+
<meta property="og:type" content="article" />
|
36 |
+
<meta property="og:title" content={title} />
|
37 |
+
{description && <meta property="og:description" content={description} />}
|
38 |
+
<meta property="og:url" content={url} />
|
39 |
+
{ogImage && <meta property="og:image" content={ogImage} />}
|
40 |
+
{published && <meta property="article:published_time" content={published} />}
|
41 |
+
{authors.map(a => <meta property="article:author" content={a} />)}
|
42 |
+
|
43 |
+
<meta name="twitter:card" content={ogImage ? 'summary_large_image' : 'summary'} />
|
44 |
+
<meta name="twitter:title" content={title} />
|
45 |
+
{description && <meta name="twitter:description" content={description} />}
|
46 |
+
{ogImage && <meta name="twitter:image" content={ogImage} />}
|
47 |
+
|
48 |
+
<script type="application/ld+json" set:html={JSON.stringify(jsonLd)} />
|
49 |
+
|
50 |
+
|
app/src/components/ThemeToggle.astro
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
import sunIconUrl from "../assets/images/sun.svg?url";
|
3 |
+
import moonIconUrl from "../assets/images/moon.svg?url";
|
4 |
+
---
|
5 |
+
<button id="theme-toggle" aria-label="Toggle color theme">
|
6 |
+
<img class="icon light" src={sunIconUrl} alt="light" width="20" height="20" />
|
7 |
+
<img class="icon dark" src={moonIconUrl} alt="dark" width="20" height="20" />
|
8 |
+
<script>
|
9 |
+
const btn = document.getElementById('theme-toggle');
|
10 |
+
const media = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)');
|
11 |
+
const prefersDark = media && media.matches;
|
12 |
+
const saved = localStorage.getItem('theme'); // 'light' | 'dark' | null
|
13 |
+
|
14 |
+
const apply = (mode) => {
|
15 |
+
document.documentElement.dataset.theme = mode;
|
16 |
+
};
|
17 |
+
|
18 |
+
// Initial mode: localStorage overrides system preference
|
19 |
+
apply(saved || (prefersDark ? 'dark' : 'light'));
|
20 |
+
|
21 |
+
// If user hasn't chosen manually, follow system changes
|
22 |
+
if (!saved && media) {
|
23 |
+
const syncWithSystem = (e) => apply(e.matches ? 'dark' : 'light');
|
24 |
+
if (media.addEventListener) media.addEventListener('change', syncWithSystem);
|
25 |
+
else if (media.addListener) media.addListener(syncWithSystem);
|
26 |
+
}
|
27 |
+
|
28 |
+
btn.addEventListener('click', () => {
|
29 |
+
const next = (document.documentElement.dataset.theme === 'dark') ? 'light' : 'dark';
|
30 |
+
localStorage.setItem('theme', next);
|
31 |
+
apply(next);
|
32 |
+
});
|
33 |
+
</script>
|
34 |
+
</button>
|
35 |
+
|
36 |
+
|
app/src/content/bibliography.bib
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@inproceedings{vaswani2017attention,
|
2 |
+
title={Attention Is All You Need},
|
3 |
+
author={Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, {
|
4 |
+
}Lukasz and Polosukhin, Illia},
|
5 |
+
booktitle={Advances in Neural Information Processing Systems},
|
6 |
+
year={2017}
|
7 |
+
}
|
8 |
+
|
9 |
+
@article{example2023,
|
10 |
+
title={Example Paper Title},
|
11 |
+
author={Example, A. and Another, A.},
|
12 |
+
journal={Journal of Examples},
|
13 |
+
volume={1},
|
14 |
+
number={1},
|
15 |
+
pages={1--10},
|
16 |
+
year={2023},
|
17 |
+
publisher={Example Publisher}
|
18 |
+
}
|
19 |
+
|
20 |
+
|
app/src/fragments/banner.html
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
app/src/fragments/bar.html
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div> <div id="fd0d6e2f-9418-45a8-acf0-f9bc9952180e" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script type="text/javascript"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("fd0d6e2f-9418-45a8-acf0-f9bc9952180e")) { Plotly.newPlot( "fd0d6e2f-9418-45a8-acf0-f9bc9952180e", [{"hovertemplate":"\u003cb\u003e%{x}\u003c\u002fb\u003e\u003cbr\u003e%{fullData.name}: %{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":"#64748b"},"name":"Baseline","offsetgroup":"grp","x":["A","B","C","D","E"],"y":[0.52,0.61,0.67,0.73,0.78],"type":"bar"},{"hovertemplate":"\u003cb\u003e%{x}\u003c\u002fb\u003e\u003cbr\u003e%{fullData.name}: %{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":"#2563eb"},"name":"Improved","offsetgroup":"grp","x":["A","B","C","D","E"],"y":[0.58,0.66,0.72,0.79,0.86],"type":"bar"},{"hovertemplate":"\u003cb\u003e%{x}\u003c\u002fb\u003e\u003cbr\u003e%{fullData.name}: %{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":"#4b5563","line":{"color":"#4b5563","width":1},"opacity":0.65},"name":"Target","offsetgroup":"grp","x":["A","B","C","D","E"],"y":[0.6,0.68,0.75,0.82,0.9],"type":"bar"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmapgl":[{"type":"heatmapgl","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"margin":{"l":28,"r":12,"t":8,"b":28},"legend":{"orientation":"h","yanchor":"bottom","y":1.02,"xanchor":"left","x":0},"xaxis":{"tickfont":{"size":12,"color":"rgba(0,0,0,0.65)"},"showgrid":false,"zeroline":false,"showline":true,"linecolor":"rgba(0,0,0,0.25)","linewidth":1,"ticks":"outside","ticklen":6,"tickcolor":"rgba(0,0,0,0.25)","title":{},"automargin":true,"fixedrange":true},"yaxis":{"tickfont":{"size":12,"color":"rgba(0,0,0,0.65)"},"showgrid":false,"zeroline":false,"showline":true,"linecolor":"rgba(0,0,0,0.25)","linewidth":1,"ticks":"outside","ticklen":6,"tickcolor":"rgba(0,0,0,0.25)","title":{},"tickformat":".2f","automargin":true,"fixedrange":true},"barmode":"group","autosize":true,"paper_bgcolor":"rgba(0,0,0,0)","plot_bgcolor":"rgba(0,0,0,0)","hovermode":"x unified"}, {"displayModeBar": false, "responsive": true, "scrollZoom": false, "doubleClick": false, "modeBarButtonsToRemove": ["zoom2d", "pan2d", "select2d", "lasso2d", "zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d", "toggleSpikelines"]} ).then(function(){
|
2 |
+
|
3 |
+
(function(){
|
4 |
+
var plots = document.querySelectorAll('.js-plotly-plot');
|
5 |
+
plots.forEach(function(gd){
|
6 |
+
function round(){
|
7 |
+
try {
|
8 |
+
var root = gd && gd.parentNode ? gd.parentNode : document;
|
9 |
+
var rects = root.querySelectorAll('.hoverlayer .hovertext rect');
|
10 |
+
rects.forEach(function(r){ r.setAttribute('rx', 8); r.setAttribute('ry', 8); });
|
11 |
+
} catch(e) {}
|
12 |
+
}
|
13 |
+
if (gd && gd.on){
|
14 |
+
gd.on('plotly_hover', round);
|
15 |
+
gd.on('plotly_unhover', round);
|
16 |
+
gd.on('plotly_relayout', round);
|
17 |
+
}
|
18 |
+
setTimeout(round, 0);
|
19 |
+
});
|
20 |
+
})();
|
21 |
+
|
22 |
+
}) }; </script> </div>
|
app/src/fragments/heatmap.html
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
<div> <div id="47076730-9b36-4ef3-9cd9-80fa6f5baf65" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script type="text/javascript"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("47076730-9b36-4ef3-9cd9-80fa6f5baf65")) { Plotly.newPlot( "47076730-9b36-4ef3-9cd9-80fa6f5baf65", [{"colorscale":[[0.0,"#e5e7eb"],[0.4,"#64748b"],[0.75,"#2563eb"],[1.0,"#4b5563"]],"customdata":[["2024-09-02","2024-09-09","2024-09-16","2024-09-23","2024-09-30","2024-10-07","2024-10-14","2024-10-21","2024-10-28","2024-11-04","2024-11-11","2024-11-18","2024-11-25","2024-12-02","2024-12-09","2024-12-16","2024-12-23","2024-12-30","2025-01-06","2025-01-13","2025-01-20","2025-01-27","2025-02-03","2025-02-10","2025-02-17","2025-02-24","2025-03-03","2025-03-10","2025-03-17","2025-03-24","2025-03-31","2025-04-07","2025-04-14","2025-04-21","2025-04-28","2025-05-05","2025-05-12","2025-05-19","2025-05-26","2025-06-02","2025-06-09","2025-06-16","2025-06-23","2025-06-30","2025-07-07","2025-07-14","2025-07-21","2025-07-28","2025-08-04","2025-08-11","2025-08-18","2025-08-25"],["2024-09-03","2024-09-10","2024-09-17","2024-09-24","2024-10-01","2024-10-08","2024-10-15","2024-10-22","2024-10-29","2024-11-05","2024-11-12","2024-11-19","2024-11-26","2024-12-03","2024-12-10","2024-12-17","2024-12-24","2024-12-31","2025-01-07","2025-01-14","2025-01-21","2025-01-28","2025-02-04","2025-02-11","2025-02-18","2025-02-25","2025-03-04","2025-03-11","2025-03-18","2025-03-25","2025-04-01","2025-04-08","2025-04-15","2025-04-22","2025-04-29","2025-05-06","2025-05-13","2025-05-20","2025-05-27","2025-06-03","2025-06-10","2025-06-17","2025-06-24","2025-07-01","2025-07-08","2025-07-15","2025-07-22","2025-07-29","2025-08-05","2025-08-12","2025-08-19","2025-08-26"],["2024-09-04","2024-09-11","2024-09-18","2024-09-25","2024-10-02","2024-10-09","2024-10-16","2024-10-23","2024-10-30","2024-11-06","2024-11-13","2024-11-20","2024-11-27","2024-12-04","2024-12-11","2024-12-18","2024-12-25","2025-01-01","2025-01-08","2025-01-15","2025-01-22","2025-01-29","2025-02-05","2025-02-12","2025-02-19","2025-02-26","2025-03-05","2025-03-12","2025-03-19","2025-03-26","2025-04-02","2025-04-09","2025-04-16","2025-04-23","2025-04-30","2025-05-07","2025-05-14","2025-05-21","2025-05-28","2025-06-04","2025-06-11","2025-06-18","2025-06-25","2025-07-02","2025-07-09","2025-07-16","2025-07-23","2025-07-30","2025-08-06","2025-08-13","2025-08-20","2025-08-27"],["2024-09-05","2024-09-12","2024-09-19","2024-09-26","2024-10-03","2024-10-10","2024-10-17","2024-10-24","2024-10-31","2024-11-07","2024-11-14","2024-11-21","2024-11-28","2024-12-05","2024-12-12","2024-12-19","2024-12-26","2025-01-02","2025-01-09","2025-01-16","2025-01-23","2025-01-30","2025-02-06","2025-02-13","2025-02-20","2025-02-27","2025-03-06","2025-03-13","2025-03-20","2025-03-27","2025-04-03","2025-04-10","2025-04-17","2025-04-24","2025-05-01","2025-05-08","2025-05-15","2025-05-22","2025-05-29","2025-06-05","2025-06-12","2025-06-19","2025-06-26","2025-07-03","2025-07-10","2025-07-17","2025-07-24","2025-07-31","2025-08-07","2025-08-14","2025-08-21","2025-08-28"],["2024-09-06","2024-09-13","2024-09-20","2024-09-27","2024-10-04","2024-10-11","2024-10-18","2024-10-25","2024-11-01","2024-11-08","2024-11-15","2024-11-22","2024-11-29","2024-12-06","2024-12-13","2024-12-20","2024-12-27","2025-01-03","2025-01-10","2025-01-17","2025-01-24","2025-01-31","2025-02-07","2025-02-14","2025-02-21","2025-02-28","2025-03-07","2025-03-14","2025-03-21","2025-03-28","2025-04-04","2025-04-11","2025-04-18","2025-04-25","2025-05-02","2025-05-09","2025-05-16","2025-05-23","2025-05-30","2025-06-06","2025-06-13","2025-06-20","2025-06-27","2025-07-04","2025-07-11","2025-07-18","2025-07-25","2025-08-01","2025-08-08","2025-08-15","2025-08-22","2025-08-29"],["2024-09-07","2024-09-14","2024-09-21","2024-09-28","2024-10-05","2024-10-12","2024-10-19","2024-10-26","2024-11-02","2024-11-09","2024-11-16","2024-11-23","2024-11-30","2024-12-07","2024-12-14","2024-12-21","2024-12-28","2025-01-04","2025-01-11","2025-01-18","2025-01-25","2025-02-01","2025-02-08","2025-02-15","2025-02-22","2025-03-01","2025-03-08","2025-03-15","2025-03-22","2025-03-29","2025-04-05","2025-04-12","2025-04-19","2025-04-26","2025-05-03","2025-05-10","2025-05-17","2025-05-24","2025-05-31","2025-06-07","2025-06-14","2025-06-21","2025-06-28","2025-07-05","2025-07-12","2025-07-19","2025-07-26","2025-08-02","2025-08-09","2025-08-16","2025-08-23","2025-08-30"],["2024-09-08","2024-09-15","2024-09-22","2024-09-29","2024-10-06","2024-10-13","2024-10-20","2024-10-27","2024-11-03","2024-11-10","2024-11-17","2024-11-24","2024-12-01","2024-12-08","2024-12-15","2024-12-22","2024-12-29","2025-01-05","2025-01-12","2025-01-19","2025-01-26","2025-02-02","2025-02-09","2025-02-16","2025-02-23","2025-03-02","2025-03-09","2025-03-16","2025-03-23","2025-03-30","2025-04-06","2025-04-13","2025-04-20","2025-04-27","2025-05-04","2025-05-11","2025-05-18","2025-05-25","2025-06-01","2025-06-08","2025-06-15","2025-06-22","2025-06-29","2025-07-06","2025-07-13","2025-07-20","2025-07-27","2025-08-03","2025-08-10","2025-08-17","2025-08-24","2025-08-31"]],"hovertemplate":"Date: %{customdata}\u003cbr\u003eValue: %{z:.2f}\u003cextra\u003e\u003c\u002fextra\u003e","showscale":false,"x":["2024-09-02","2024-09-09","2024-09-16","2024-09-23","2024-09-30","2024-10-07","2024-10-14","2024-10-21","2024-10-28","2024-11-04","2024-11-11","2024-11-18","2024-11-25","2024-12-02","2024-12-09","2024-12-16","2024-12-23","2024-12-30","2025-01-06","2025-01-13","2025-01-20","2025-01-27","2025-02-03","2025-02-10","2025-02-17","2025-02-24","2025-03-03","2025-03-10","2025-03-17","2025-03-24","2025-03-31","2025-04-07","2025-04-14","2025-04-21","2025-04-28","2025-05-05","2025-05-12","2025-05-19","2025-05-26","2025-06-02","2025-06-09","2025-06-16","2025-06-23","2025-06-30","2025-07-07","2025-07-14","2025-07-21","2025-07-28","2025-08-04","2025-08-11","2025-08-18","2025-08-25"],"xgap":2,"y":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],"ygap":2,"z":[[0.13459901272105057,0.07144037267686924,0.0,0.02567169542484793,0.1943701957602955,0.0,0.10315424053432098,0.2223869321144732,0.0101747131633462,0.04624564471870697,0.1866248629409762,0.1619588952957143,0.10179656128853301,0.28127388190834635,0.24363532332682114,0.38314067714644795,0.3904396470156554,0.5871417623089922,0.4494512420063476,0.7075867892330924,0.5854536843986621,0.6749419514555224,0.7305655930672372,0.897409823215684,0.8918983512872566,0.9209354080279966,0.9308865657264072,0.8059584841797863,1.0,0.898048571887148,1.0,1.0,0.8590184058919965,1.0,1.0,0.7732387178889825,0.8912170907522784,0.8184163384586197,0.822475204602678,0.7642543483018442,0.5431644942315057,0.6355115517973967,0.7015969114652315,0.5460237405196436,0.4879670174082411,0.4675485058035454,0.42809456698479686,0.2911841791176736,0.1481675433317543,0.13923730763227324,0.1766461423778808,0.1699281866099175],[0.0,0.0,0.0017899698622748927,0.0,0.09677158638116767,0.12479477625677105,0.10895777790688227,0.15189044557185855,0.09654580653607348,0.1795492865957899,0.3052268504010917,0.32596436590345157,0.18411123726736778,0.35977527304759266,0.35252652681600993,0.5427417269194631,0.5651562981702217,0.47750647994960754,0.4561350741573436,0.7417137309609516,0.5102953771880667,0.8241126373750014,0.7797236509747064,0.9332037061153636,0.9824394294545304,0.8289995839250157,1.0,0.7913308880046568,0.8189055068633593,1.0,0.8223965509972967,0.8348974442606938,0.9564174304426082,0.8985185636493014,1.0,0.8604991326856607,0.9758735705615857,0.6558932159815902,0.7000147719646015,0.5799408830216487,0.7035151530934022,0.7478886919490498,0.6337798522620632,0.4941685362991634,0.4092062677590119,0.4232057215920778,0.2300237268973226,0.3526820715419722,0.3679596483947415,0.10802723932902636,0.25227992652493664,0.13091171870017465],[0.18654843761315884,0.02424509841700278,0.0,0.03388313524346659,0.0,0.12125378247595983,0.0,0.0,0.13088917701073183,0.16910681233669253,0.10310100475666693,0.20052186435225497,0.3816697335862501,0.22282049255664288,0.28520333869041986,0.40340313228078245,0.3690761124240207,0.6115883706700836,0.47033965930665544,0.6007036424693509,0.7598327462235945,0.5773116058876002,0.6237534811100747,0.8691407726978946,0.7375919944566651,0.941330162011735,0.8014934674635664,0.8458330455003304,0.9611035861419381,0.8463915521310343,1.0,1.0,1.0,1.0,1.0,0.7932695891537325,0.9596482462801176,0.915947343178816,0.6136511921161285,0.5624943289814737,0.5541252690852431,0.5344741327070746,0.5169619710495121,0.46374855539511284,0.47539824510653705,0.24291414204185113,0.2543250806739876,0.31026724130890454,0.16093385741803784,0.17923375751178566,0.28907858857606483,0.09118081773759709],[0.04274285618353736,0.16773213722549252,0.0,0.027348236792497493,0.19678388324323698,0.0,0.0,0.0,0.0,0.0067895255930027765,0.2289109950080088,0.12593408541693593,0.11541624142573209,0.17043612043585676,0.4096860328972915,0.5574474536390003,0.484527060997471,0.3920676804861751,0.5784662869674918,0.6995971109532144,0.6467757589136034,0.8109481639584317,0.7425226445007554,0.7478239359283666,0.9666926185706564,0.9587154359758231,0.7863943022510236,0.7986686327668135,1.0,1.0,1.0,1.0,0.8091532345633923,0.9558433252238909,0.8031303542172052,0.8725859202971921,0.7566835148011993,0.7778067221045616,0.8077718658444186,0.7050984538121973,0.6791435853965506,0.7315047589823398,0.6274606401446008,0.6090447486281656,0.47565459019472395,0.3626444151812243,0.3781788689164846,0.1428027187105927,0.13024918340438868,0.24538136440926647,0.25413551726238914,0.2638681222155129],[0.16631123049192714,0.21393461748259215,0.17443172320155878,0.16030598440664023,0.008372431838735095,0.048590697685584064,0.12304248758475622,0.05962196841028138,0.04021069416966182,0.19139690202159018,0.19091509263961848,0.33755767564372935,0.26222784209855,0.3836164558963834,0.4951442089456719,0.42861473393542787,0.6191816151803766,0.6337521044168415,0.5006396943655522,0.613622934507656,0.5840928534076,0.6852784052867706,0.7425115550483108,0.7805104874379335,0.8068752071639289,0.8268975901194805,0.8083965524738981,0.970997420540351,1.0,0.835199310773221,0.8451380333804511,0.8935781712143693,0.9260453704963016,1.0,0.8279150004605469,1.0,0.8523959398966388,0.7719099661835359,0.881081537171595,0.6749144766088301,0.6107016930483002,0.6206214151930902,0.41410447536673967,0.5191072714001534,0.5213551688304456,0.4247676354556676,0.4396179366988354,0.368866379134083,0.16339728503322348,0.1173613402559649,0.09602005004734745,0.07480784435331583],[0.046590987334549576,0.10123262009753725,0.02093213312475304,0.0,0.07125379358885636,0.11217969099637068,0.0,0.04223494562109133,0.0,0.2407179325890179,0.10427870014018772,0.16707365585204992,0.1793360141618333,0.44441581083681436,0.5015112790992493,0.324885132203605,0.4145937619787646,0.5945489220423629,0.49092001333284074,0.7608613987453299,0.62750715549575,0.8547015477375716,0.8346531778992586,0.9684788887645426,1.0,0.8136483326914014,0.807430828663213,0.9557997633645948,0.9341359236245382,0.8658706292175599,0.7999512579226341,0.8315899109479433,1.0,0.7834447149945696,0.821791956125248,0.8837193194656598,0.7717628566232109,0.800652279919202,0.6248520681660523,0.7382895308902923,0.6921482346155182,0.5893888952931976,0.4496816205443064,0.38499598068827606,0.28076008234368877,0.2359389188931954,0.21120429234963584,0.21097085986745998,0.3105027222666124,0.15148478367041826,0.1346761632737261,0.012262819186755189],[0.009666345383968863,0.11116647068498314,0.09294877334825495,0.0,0.0,0.2011845639304187,0.1746125923167111,0.16006896670795023,0.0,0.28572584519939537,0.2106947405688844,0.24717486234760797,0.28443580982016986,0.46446650959504143,0.331714655444355,0.43317910390302933,0.5322084048261323,0.6040016380656543,0.5272867409409122,0.6326146082611722,0.7481764440823108,0.6032879101358065,0.8983906824318192,0.8272461712741,0.7697692673827646,0.7968738421076039,0.8931913970024197,0.9329148302840636,0.904554090664641,0.8543001086485396,0.8838775248978465,0.8560252873023545,0.8122001360665569,1.0,0.7616937704042586,0.9029733179243924,0.8776848090469377,0.9202037297571337,0.6884370069119261,0.8140845758855468,0.7631365695720691,0.5410474299147227,0.6587768738699801,0.5594767226752763,0.39462779575958423,0.4973245647686208,0.23374565469040598,0.14285601938377673,0.0893905690513131,0.320572013689418,0.16675392505723788,0.039142897242472996]],"type":"heatmap"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmapgl":[{"type":"heatmapgl","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"margin":{"l":28,"r":12,"t":8,"b":28},"xaxis":{"showgrid":false,"zeroline":false,"showline":false,"ticks":"","showticklabels":false,"fixedrange":true},"yaxis":{"tickfont":{"size":12,"color":"rgba(0,0,0,0.65)"},"showgrid":false,"zeroline":false,"showline":false,"ticks":"","fixedrange":true},"autosize":true,"paper_bgcolor":"rgba(0,0,0,0)","plot_bgcolor":"rgba(0,0,0,0)"}, {"displayModeBar": false, "responsive": true, "scrollZoom": false} ) }; </script> </div>
|
app/src/fragments/line.html
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
<div> <div id="9ede8c7f-7b5c-4431-8616-891d85efdf07" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script type="text/javascript"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("9ede8c7f-7b5c-4431-8616-891d85efdf07")) { Plotly.newPlot( "9ede8c7f-7b5c-4431-8616-891d85efdf07", [{"hovertemplate":"\u003cb\u003e%{fullData.name}\u003c\u002fb\u003e\u003cbr\u003ex=%{x:.2f}\u003cbr\u003ey=%{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#64748b","shape":"spline","smoothing":0.6,"width":2},"mode":"lines","name":"Baseline","showlegend":true,"x":[0.0,0.0041841004184100415,0.008368200836820083,0.012552301255230124,0.016736401673640166,0.02092050209205021,0.025104602510460247,0.02928870292887029,0.03347280334728033,0.03765690376569037,0.04184100418410042,0.046025104602510455,0.050209205020920494,0.05439330543933054,0.05857740585774058,0.06276150627615062,0.06694560669456066,0.0711297071129707,0.07531380753138074,0.0794979079497908,0.08368200836820083,0.08786610878661087,0.09205020920502091,0.09623430962343095,0.10041841004184099,0.10460251046025104,0.10878661087866108,0.11297071129707112,0.11715481171548116,0.1213389121338912,0.12552301255230125,0.12970711297071127,0.13389121338912133,0.13807531380753138,0.1422594142259414,0.14644351464435146,0.15062761506276148,0.15481171548117154,0.1589958158995816,0.1631799163179916,0.16736401673640167,0.1715481171548117,0.17573221757322174,0.1799163179916318,0.18410041841004182,0.18828451882845187,0.1924686192468619,0.19665271966527195,0.20083682008368198,0.20502092050209203,0.20920502092050208,0.2133891213389121,0.21757322175732216,0.22175732217573219,0.22594142259414224,0.2301255230125523,0.23430962343096232,0.23849372384937237,0.2426778242677824,0.24686192468619245,0.2510460251046025,0.25523012552301255,0.25941422594142255,0.2635983263598326,0.26778242677824265,0.2719665271966527,0.27615062761506276,0.28033472803347276,0.2845188284518828,0.28870292887029286,0.2928870292887029,0.29707112970711297,0.30125523012552297,0.305439330543933,0.30962343096234307,0.3138075313807531,0.3179916317991632,0.3221757322175732,0.3263598326359832,0.3305439330543933,0.33472803347280333,0.3389121338912134,0.3430962343096234,0.34728033472803344,0.3514644351464435,0.35564853556485354,0.3598326359832636,0.3640167364016736,0.36820083682008364,0.3723849372384937,0.37656903765690375,0.3807531380753138,0.3849372384937238,0.38912133891213385,0.3933054393305439,0.39748953974895396,0.40167364016736395,0.405857740585774,0.41004184100418406,0.4142259414225941,0.41841004184100417,0.42259414225941416,0.4267782426778242,0.43096234309623427,0.4351464435146443,0.4393305439330544,0.44351464435146437,0.4476987447698744,0.4518828451882845,0.45606694560669453,0.4602510460251046,0.4644351464435146,0.46861924686192463,0.4728033472803347,0.47698744769874474,0.4811715481171548,0.4853556485355648,0.48953974895397484,0.4937238493723849,0.49790794979079495,0.502092050209205,0.506276150627615,0.5104602510460251,0.5146443514644351,0.5188284518828451,0.5230125523012552,0.5271966527196652,0.5313807531380753,0.5355648535564853,0.5397489539748953,0.5439330543933054,0.5481171548117154,0.5523012552301255,0.5564853556485355,0.5606694560669455,0.5648535564853556,0.5690376569037656,0.5732217573221757,0.5774058577405857,0.5815899581589957,0.5857740585774058,0.5899581589958158,0.5941422594142259,0.5983263598326359,0.6025104602510459,0.606694560669456,0.610878661087866,0.6150627615062761,0.6192468619246861,0.6234309623430961,0.6276150627615062,0.6317991631799162,0.6359832635983264,0.6401673640167364,0.6443514644351463,0.6485355648535565,0.6527196652719665,0.6569037656903766,0.6610878661087866,0.6652719665271966,0.6694560669456067,0.6736401673640167,0.6778242677824268,0.6820083682008368,0.6861924686192468,0.6903765690376569,0.6945606694560669,0.698744769874477,0.702928870292887,0.707112970711297,0.7112970711297071,0.7154811715481171,0.7196652719665272,0.7238493723849372,0.7280334728033472,0.7322175732217573,0.7364016736401673,0.7405857740585774,0.7447698744769874,0.7489539748953974,0.7531380753138075,0.7573221757322175,0.7615062761506276,0.7656903765690376,0.7698744769874476,0.7740585774058577,0.7782426778242677,0.7824267782426778,0.7866108786610878,0.7907949790794978,0.7949790794979079,0.7991631799163179,0.8033472803347279,0.807531380753138,0.811715481171548,0.8158995815899581,0.8200836820083681,0.8242677824267781,0.8284518828451882,0.8326359832635982,0.8368200836820083,0.8410041841004183,0.8451882845188283,0.8493723849372384,0.8535564853556484,0.8577405857740585,0.8619246861924685,0.8661087866108785,0.8702928870292886,0.8744769874476986,0.8786610878661087,0.8828451882845187,0.8870292887029287,0.8912133891213389,0.8953974895397488,0.899581589958159,0.903765690376569,0.907949790794979,0.9121338912133891,0.9163179916317991,0.9205020920502092,0.9246861924686192,0.9288702928870292,0.9330543933054393,0.9372384937238493,0.9414225941422594,0.9456066945606694,0.9497907949790794,0.9539748953974895,0.9581589958158995,0.9623430962343096,0.9665271966527196,0.9707112970711296,0.9748953974895397,0.9790794979079497,0.9832635983263598,0.9874476987447698,0.9916317991631798,0.9958158995815899,1.0],"y":[0.2,0.20251046025104605,0.20502092050209206,0.2075313807531381,0.2100418410041841,0.21255230125523014,0.21506276150627615,0.2175732217573222,0.2200836820083682,0.22259414225941423,0.22510460251046027,0.22761506276150628,0.2301255230125523,0.23263598326359833,0.23514644351464437,0.23765690376569037,0.2401673640167364,0.24267782426778242,0.24518828451882846,0.2476987447698745,0.25020920502092053,0.25271966527196654,0.25523012552301255,0.25774058577405856,0.2602510460251046,0.26276150627615064,0.26527196652719665,0.2677824267782427,0.2702928870292887,0.27280334728033473,0.27531380753138074,0.27782426778242675,0.2803347280334728,0.2828451882845188,0.28535564853556483,0.2878661087866109,0.2903765690376569,0.2928870292887029,0.295397489539749,0.297907949790795,0.300418410041841,0.302928870292887,0.3054393305439331,0.3079497907949791,0.3104602510460251,0.3129707112970711,0.31548117154811717,0.3179916317991632,0.3205020920502092,0.32301255230125525,0.32552301255230126,0.32803347280334727,0.33054393305439334,0.3330543933054393,0.33556485355648535,0.3380753138075314,0.3405857740585774,0.34309623430962344,0.34560669456066945,0.34811715481171546,0.3506276150627615,0.35313807531380753,0.35564853556485354,0.3581589958158996,0.36066945606694556,0.3631799163179916,0.3656903765690377,0.36820083682008364,0.3707112970711297,0.3732217573221757,0.3757322175732217,0.3782426778242678,0.38075313807531375,0.3832635983263598,0.3857740585774059,0.3882845188284519,0.3907949790794979,0.3933054393305439,0.3958158995815899,0.398326359832636,0.40083682008368204,0.403347280334728,0.40585774058577406,0.40836820083682007,0.4108786610878661,0.41338912133891215,0.41589958158995816,0.41841004184100417,0.42092050209205023,0.4234309623430962,0.42594142259414225,0.4284518828451883,0.43096234309623427,0.43347280334728033,0.43598326359832634,0.43849372384937235,0.44100418410041836,0.44351464435146437,0.44602510460251044,0.4485355648535565,0.4510460251046025,0.4535564853556485,0.45606694560669453,0.45857740585774054,0.4610878661087866,0.4635983263598326,0.4661087866108786,0.46861924686192463,0.4711297071129707,0.4736401673640167,0.47615062761506277,0.4786610878661087,0.4811715481171548,0.4836820083682008,0.48619246861924686,0.4887029288702929,0.4912133891213389,0.4937238493723849,0.49623430962343096,0.49874476987447697,0.501255230125523,0.503765690376569,0.506276150627615,0.5087866108786611,0.5112970711297071,0.5138075313807531,0.5163179916317991,0.5188284518828452,0.5213389121338912,0.5238493723849371,0.5263598326359833,0.5288702928870292,0.5313807531380753,0.5338912133891214,0.5364016736401673,0.5389121338912134,0.5414225941422594,0.5439330543933054,0.5464435146443514,0.5489539748953974,0.5514644351464435,0.5539748953974895,0.5564853556485356,0.5589958158995816,0.5615062761506275,0.5640167364016736,0.5665271966527197,0.5690376569037656,0.5715481171548117,0.5740585774058578,0.5765690376569037,0.5790794979079498,0.5815899581589958,0.5841004184100418,0.5866108786610877,0.5891213389121339,0.5916317991631799,0.5941422594142259,0.596652719665272,0.599163179916318,0.601673640167364,0.60418410041841,0.606694560669456,0.609205020920502,0.6117154811715481,0.6142259414225941,0.6167364016736401,0.6192468619246863,0.6217573221757322,0.6242677824267782,0.6267782426778242,0.6292887029288703,0.6317991631799162,0.6343096234309623,0.6368200836820084,0.6393305439330543,0.6418410041841004,0.6443514644351465,0.6468619246861924,0.6493723849372384,0.6518828451882845,0.6543933054393305,0.6569037656903766,0.6594142259414226,0.6619246861924686,0.6644351464435145,0.6669456066945606,0.6694560669456067,0.6719665271966526,0.6744769874476987,0.6769874476987447,0.6794979079497907,0.6820083682008367,0.6845188284518828,0.6870292887029288,0.6895397489539749,0.6920502092050209,0.6945606694560669,0.6970711297071129,0.699581589958159,0.702092050209205,0.7046025104602509,0.7071129707112971,0.709623430962343,0.712133891213389,0.7146443514644352,0.7171548117154811,0.7196652719665271,0.7221757322175733,0.7246861924686192,0.7271966527196652,0.7297071129707113,0.7322175732217573,0.7347280334728032,0.7372384937238492,0.7397489539748954,0.7422594142259413,0.7447698744769873,0.7472803347280335,0.7497907949790794,0.7523012552301256,0.7548117154811715,0.7573221757322175,0.7598326359832634,0.7623430962343096,0.7648535564853556,0.7673640167364015,0.7698744769874477,0.7723849372384937,0.7748953974895396,0.7774058577405858,0.7799163179916317,0.7824267782426777,0.7849372384937239,0.7874476987447698,0.7899581589958158,0.792468619246862,0.7949790794979079,0.7974895397489539,0.8],"type":"scatter"},{"hovertemplate":"\u003cb\u003e%{fullData.name}\u003c\u002fb\u003e\u003cbr\u003ex=%{x:.2f}\u003cbr\u003ey=%{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#2563eb","shape":"spline","smoothing":0.6,"width":2},"mode":"lines","name":"Improved","showlegend":true,"x":[0.0,0.0041841004184100415,0.008368200836820083,0.012552301255230124,0.016736401673640166,0.02092050209205021,0.025104602510460247,0.02928870292887029,0.03347280334728033,0.03765690376569037,0.04184100418410042,0.046025104602510455,0.050209205020920494,0.05439330543933054,0.05857740585774058,0.06276150627615062,0.06694560669456066,0.0711297071129707,0.07531380753138074,0.0794979079497908,0.08368200836820083,0.08786610878661087,0.09205020920502091,0.09623430962343095,0.10041841004184099,0.10460251046025104,0.10878661087866108,0.11297071129707112,0.11715481171548116,0.1213389121338912,0.12552301255230125,0.12970711297071127,0.13389121338912133,0.13807531380753138,0.1422594142259414,0.14644351464435146,0.15062761506276148,0.15481171548117154,0.1589958158995816,0.1631799163179916,0.16736401673640167,0.1715481171548117,0.17573221757322174,0.1799163179916318,0.18410041841004182,0.18828451882845187,0.1924686192468619,0.19665271966527195,0.20083682008368198,0.20502092050209203,0.20920502092050208,0.2133891213389121,0.21757322175732216,0.22175732217573219,0.22594142259414224,0.2301255230125523,0.23430962343096232,0.23849372384937237,0.2426778242677824,0.24686192468619245,0.2510460251046025,0.25523012552301255,0.25941422594142255,0.2635983263598326,0.26778242677824265,0.2719665271966527,0.27615062761506276,0.28033472803347276,0.2845188284518828,0.28870292887029286,0.2928870292887029,0.29707112970711297,0.30125523012552297,0.305439330543933,0.30962343096234307,0.3138075313807531,0.3179916317991632,0.3221757322175732,0.3263598326359832,0.3305439330543933,0.33472803347280333,0.3389121338912134,0.3430962343096234,0.34728033472803344,0.3514644351464435,0.35564853556485354,0.3598326359832636,0.3640167364016736,0.36820083682008364,0.3723849372384937,0.37656903765690375,0.3807531380753138,0.3849372384937238,0.38912133891213385,0.3933054393305439,0.39748953974895396,0.40167364016736395,0.405857740585774,0.41004184100418406,0.4142259414225941,0.41841004184100417,0.42259414225941416,0.4267782426778242,0.43096234309623427,0.4351464435146443,0.4393305439330544,0.44351464435146437,0.4476987447698744,0.4518828451882845,0.45606694560669453,0.4602510460251046,0.4644351464435146,0.46861924686192463,0.4728033472803347,0.47698744769874474,0.4811715481171548,0.4853556485355648,0.48953974895397484,0.4937238493723849,0.49790794979079495,0.502092050209205,0.506276150627615,0.5104602510460251,0.5146443514644351,0.5188284518828451,0.5230125523012552,0.5271966527196652,0.5313807531380753,0.5355648535564853,0.5397489539748953,0.5439330543933054,0.5481171548117154,0.5523012552301255,0.5564853556485355,0.5606694560669455,0.5648535564853556,0.5690376569037656,0.5732217573221757,0.5774058577405857,0.5815899581589957,0.5857740585774058,0.5899581589958158,0.5941422594142259,0.5983263598326359,0.6025104602510459,0.606694560669456,0.610878661087866,0.6150627615062761,0.6192468619246861,0.6234309623430961,0.6276150627615062,0.6317991631799162,0.6359832635983264,0.6401673640167364,0.6443514644351463,0.6485355648535565,0.6527196652719665,0.6569037656903766,0.6610878661087866,0.6652719665271966,0.6694560669456067,0.6736401673640167,0.6778242677824268,0.6820083682008368,0.6861924686192468,0.6903765690376569,0.6945606694560669,0.698744769874477,0.702928870292887,0.707112970711297,0.7112970711297071,0.7154811715481171,0.7196652719665272,0.7238493723849372,0.7280334728033472,0.7322175732217573,0.7364016736401673,0.7405857740585774,0.7447698744769874,0.7489539748953974,0.7531380753138075,0.7573221757322175,0.7615062761506276,0.7656903765690376,0.7698744769874476,0.7740585774058577,0.7782426778242677,0.7824267782426778,0.7866108786610878,0.7907949790794978,0.7949790794979079,0.7991631799163179,0.8033472803347279,0.807531380753138,0.811715481171548,0.8158995815899581,0.8200836820083681,0.8242677824267781,0.8284518828451882,0.8326359832635982,0.8368200836820083,0.8410041841004183,0.8451882845188283,0.8493723849372384,0.8535564853556484,0.8577405857740585,0.8619246861924685,0.8661087866108785,0.8702928870292886,0.8744769874476986,0.8786610878661087,0.8828451882845187,0.8870292887029287,0.8912133891213389,0.8953974895397488,0.899581589958159,0.903765690376569,0.907949790794979,0.9121338912133891,0.9163179916317991,0.9205020920502092,0.9246861924686192,0.9288702928870292,0.9330543933054393,0.9372384937238493,0.9414225941422594,0.9456066945606694,0.9497907949790794,0.9539748953974895,0.9581589958158995,0.9623430962343096,0.9665271966527196,0.9707112970711296,0.9748953974895397,0.9790794979079497,0.9832635983263598,0.9874476987447698,0.9916317991631798,0.9958158995815899,1.0],"y":[0.15,0.15292887029288701,0.15585774058577406,0.15878661087866108,0.1617154811715481,0.16464435146443515,0.16757322175732217,0.1705020920502092,0.17343096234309624,0.17635983263598326,0.17928870292887028,0.1822175732217573,0.18514644351464432,0.18807531380753137,0.1910041841004184,0.19393305439330544,0.19686192468619246,0.19979079497907948,0.2027196652719665,0.20564853556485355,0.20857740585774057,0.21150627615062761,0.21443514644351463,0.21736401673640166,0.22029288702928868,0.22322175732217572,0.22615062761506274,0.2290794979079498,0.2320083682008368,0.23493723849372383,0.23786610878661085,0.24079497907949787,0.24372384937238492,0.24665271966527197,0.249581589958159,0.252510460251046,0.25543933054393303,0.25836820083682005,0.2612970711297071,0.26422594142259415,0.26715481171548117,0.2700836820083682,0.2730125523012552,0.2759414225941422,0.27887029288702925,0.28179916317991627,0.2847280334728033,0.28765690376569036,0.29058577405857733,0.2935146443514644,0.2964435146443515,0.2993723849372385,0.3023012552301255,0.30523012552301254,0.30815899581589956,0.3110878661087866,0.3140167364016736,0.3169456066945606,0.31987447698744764,0.32280334728033466,0.32573221757322174,0.32866108786610876,0.3315899581589958,0.3345188284518828,0.3374476987447699,0.3403765690376569,0.3433054393305439,0.34623430962343094,0.34916317991631796,0.352092050209205,0.355020920502092,0.3579497907949791,0.36087866108786604,0.36380753138075306,0.36673640167364013,0.36966527196652715,0.37259414225941423,0.3755230125523012,0.37845188284518827,0.3813807531380753,0.3843096234309623,0.38723849372384933,0.39016736401673635,0.39309623430962337,0.3960251046025104,0.39895397489539747,0.40188284518828454,0.40481171548117145,0.4077405857740586,0.4106694560669456,0.4135983263598326,0.41652719665271964,0.41945606694560666,0.4223849372384937,0.4253138075313807,0.4282426778242677,0.43117154811715475,0.43410041841004177,0.4370292887029288,0.4399581589958158,0.44288702928870294,0.44581589958158985,0.448744769874477,0.451673640167364,0.454602510460251,0.45753138075313804,0.46046025104602506,0.4633891213389121,0.4663179916317991,0.4692468619246861,0.47217573221757314,0.47510460251046016,0.4780334728033472,0.4809623430962342,0.48389121338912133,0.48682008368200835,0.4897489539748954,0.4926778242677824,0.4956066945606694,0.49853556485355643,0.5014644351464435,0.5043933054393305,0.5073221757322175,0.5102510460251045,0.5131799163179915,0.5161087866108787,0.5190376569037656,0.5219665271966527,0.5248953974895397,0.5278242677824266,0.5307531380753138,0.5336820083682008,0.5366108786610878,0.5395397489539748,0.5424686192468618,0.5453974895397489,0.5483263598326359,0.551255230125523,0.5541841004184099,0.557112970711297,0.5600418410041841,0.5629707112970711,0.5658995815899581,0.5688284518828451,0.5717573221757322,0.5746861924686192,0.5776150627615062,0.5805439330543932,0.5834728033472802,0.5864016736401673,0.5893305439330543,0.5922594142259413,0.5951882845188284,0.5981171548117155,0.6010460251046024,0.6039748953974895,0.6069037656903765,0.6098326359832635,0.6127615062761506,0.6156903765690376,0.6186192468619246,0.6215481171548116,0.6244769874476988,0.6274058577405857,0.6303347280334727,0.6332635983263598,0.6361924686192467,0.6391213389121339,0.6420502092050209,0.6449790794979079,0.6479079497907949,0.6508368200836819,0.6537656903765691,0.656694560669456,0.659623430962343,0.6625523012552301,0.6654811715481171,0.6684100418410042,0.6713389121338912,0.6742677824267782,0.6771966527196652,0.6801255230125522,0.6830543933054393,0.6859832635983263,0.6889121338912133,0.6918410041841003,0.6947698744769873,0.6976987447698745,0.7006276150627615,0.7035564853556484,0.7064853556485355,0.7094142259414226,0.7123430962343095,0.7152719665271966,0.7182008368200836,0.7211297071129706,0.7240585774058577,0.7269874476987447,0.7299163179916317,0.7328451882845187,0.7357740585774059,0.7387029288702928,0.7416317991631798,0.7445606694560669,0.7474895397489539,0.750418410041841,0.753347280334728,0.756276150627615,0.759205020920502,0.762133891213389,0.7650627615062761,0.7679916317991631,0.7709205020920501,0.7738493723849372,0.7767782426778241,0.7797071129707113,0.7826359832635983,0.7855648535564852,0.7884937238493723,0.7914225941422594,0.7943514644351464,0.7972803347280334,0.8002092050209204,0.8031380753138074,0.8060669456066945,0.8089958158995816,0.8119246861924685,0.8148535564853555,0.8177824267782426,0.8207112970711297,0.8236401673640167,0.8265690376569037,0.8294979079497907,0.8324267782426777,0.8353556485355648,0.8382845188284518,0.8412133891213388,0.8441422594142258,0.847071129707113,0.85],"type":"scatter"},{"hovertemplate":"\u003cb\u003e%{fullData.name}\u003c\u002fb\u003e\u003cbr\u003ex=%{x:.2f}\u003cbr\u003ey=%{y:.3f}\u003cextra\u003e\u003c\u002fextra\u003e","line":{"color":"#4b5563","dash":"dash","width":2},"mode":"lines","name":"Target","showlegend":true,"x":[0.0,0.0041841004184100415,0.008368200836820083,0.012552301255230124,0.016736401673640166,0.02092050209205021,0.025104602510460247,0.02928870292887029,0.03347280334728033,0.03765690376569037,0.04184100418410042,0.046025104602510455,0.050209205020920494,0.05439330543933054,0.05857740585774058,0.06276150627615062,0.06694560669456066,0.0711297071129707,0.07531380753138074,0.0794979079497908,0.08368200836820083,0.08786610878661087,0.09205020920502091,0.09623430962343095,0.10041841004184099,0.10460251046025104,0.10878661087866108,0.11297071129707112,0.11715481171548116,0.1213389121338912,0.12552301255230125,0.12970711297071127,0.13389121338912133,0.13807531380753138,0.1422594142259414,0.14644351464435146,0.15062761506276148,0.15481171548117154,0.1589958158995816,0.1631799163179916,0.16736401673640167,0.1715481171548117,0.17573221757322174,0.1799163179916318,0.18410041841004182,0.18828451882845187,0.1924686192468619,0.19665271966527195,0.20083682008368198,0.20502092050209203,0.20920502092050208,0.2133891213389121,0.21757322175732216,0.22175732217573219,0.22594142259414224,0.2301255230125523,0.23430962343096232,0.23849372384937237,0.2426778242677824,0.24686192468619245,0.2510460251046025,0.25523012552301255,0.25941422594142255,0.2635983263598326,0.26778242677824265,0.2719665271966527,0.27615062761506276,0.28033472803347276,0.2845188284518828,0.28870292887029286,0.2928870292887029,0.29707112970711297,0.30125523012552297,0.305439330543933,0.30962343096234307,0.3138075313807531,0.3179916317991632,0.3221757322175732,0.3263598326359832,0.3305439330543933,0.33472803347280333,0.3389121338912134,0.3430962343096234,0.34728033472803344,0.3514644351464435,0.35564853556485354,0.3598326359832636,0.3640167364016736,0.36820083682008364,0.3723849372384937,0.37656903765690375,0.3807531380753138,0.3849372384937238,0.38912133891213385,0.3933054393305439,0.39748953974895396,0.40167364016736395,0.405857740585774,0.41004184100418406,0.4142259414225941,0.41841004184100417,0.42259414225941416,0.4267782426778242,0.43096234309623427,0.4351464435146443,0.4393305439330544,0.44351464435146437,0.4476987447698744,0.4518828451882845,0.45606694560669453,0.4602510460251046,0.4644351464435146,0.46861924686192463,0.4728033472803347,0.47698744769874474,0.4811715481171548,0.4853556485355648,0.48953974895397484,0.4937238493723849,0.49790794979079495,0.502092050209205,0.506276150627615,0.5104602510460251,0.5146443514644351,0.5188284518828451,0.5230125523012552,0.5271966527196652,0.5313807531380753,0.5355648535564853,0.5397489539748953,0.5439330543933054,0.5481171548117154,0.5523012552301255,0.5564853556485355,0.5606694560669455,0.5648535564853556,0.5690376569037656,0.5732217573221757,0.5774058577405857,0.5815899581589957,0.5857740585774058,0.5899581589958158,0.5941422594142259,0.5983263598326359,0.6025104602510459,0.606694560669456,0.610878661087866,0.6150627615062761,0.6192468619246861,0.6234309623430961,0.6276150627615062,0.6317991631799162,0.6359832635983264,0.6401673640167364,0.6443514644351463,0.6485355648535565,0.6527196652719665,0.6569037656903766,0.6610878661087866,0.6652719665271966,0.6694560669456067,0.6736401673640167,0.6778242677824268,0.6820083682008368,0.6861924686192468,0.6903765690376569,0.6945606694560669,0.698744769874477,0.702928870292887,0.707112970711297,0.7112970711297071,0.7154811715481171,0.7196652719665272,0.7238493723849372,0.7280334728033472,0.7322175732217573,0.7364016736401673,0.7405857740585774,0.7447698744769874,0.7489539748953974,0.7531380753138075,0.7573221757322175,0.7615062761506276,0.7656903765690376,0.7698744769874476,0.7740585774058577,0.7782426778242677,0.7824267782426778,0.7866108786610878,0.7907949790794978,0.7949790794979079,0.7991631799163179,0.8033472803347279,0.807531380753138,0.811715481171548,0.8158995815899581,0.8200836820083681,0.8242677824267781,0.8284518828451882,0.8326359832635982,0.8368200836820083,0.8410041841004183,0.8451882845188283,0.8493723849372384,0.8535564853556484,0.8577405857740585,0.8619246861924685,0.8661087866108785,0.8702928870292886,0.8744769874476986,0.8786610878661087,0.8828451882845187,0.8870292887029287,0.8912133891213389,0.8953974895397488,0.899581589958159,0.903765690376569,0.907949790794979,0.9121338912133891,0.9163179916317991,0.9205020920502092,0.9246861924686192,0.9288702928870292,0.9330543933054393,0.9372384937238493,0.9414225941422594,0.9456066945606694,0.9497907949790794,0.9539748953974895,0.9581589958158995,0.9623430962343096,0.9665271966527196,0.9707112970711296,0.9748953974895397,0.9790794979079497,0.9832635983263598,0.9874476987447698,0.9916317991631798,0.9958158995815899,1.0],"y":[0.1,0.10334728033472804,0.10669456066945607,0.1100418410041841,0.11338912133891214,0.11673640167364017,0.1200836820083682,0.12343096234309624,0.12677824267782428,0.1301255230125523,0.13347280334728034,0.13682008368200838,0.1401673640167364,0.14351464435146444,0.14686192468619247,0.1502092050209205,0.15355648535564853,0.15690376569037656,0.1602510460251046,0.16359832635983262,0.16694560669456066,0.1702928870292887,0.17364016736401672,0.17698744769874478,0.1803347280334728,0.18368200836820084,0.18702928870292887,0.1903765690376569,0.19372384937238493,0.19707112970711296,0.20041841004184102,0.20376569037656903,0.20711297071129708,0.21046025104602512,0.21380753138075315,0.21715481171548118,0.2205020920502092,0.22384937238493724,0.22719665271966527,0.2305439330543933,0.23389121338912133,0.23723849372384936,0.2405857740585774,0.24393305439330545,0.24728033472803346,0.25062761506276154,0.2539748953974895,0.2573221757322176,0.2606694560669456,0.26401673640167367,0.26736401673640164,0.27071129707112973,0.2740585774058577,0.2774058577405858,0.28075313807531377,0.28410041841004186,0.28744769874476983,0.2907949790794979,0.2941422594142259,0.297489539748954,0.300836820083682,0.30418410041841004,0.307531380753138,0.3108786610878661,0.31422594142259413,0.31757322175732217,0.32092050209205025,0.32426778242677823,0.32761506276150626,0.3309623430962343,0.3343096234309624,0.33765690376569035,0.3410041841004184,0.3443514644351464,0.3476987447698745,0.3510460251046025,0.35439330543933056,0.35774058577405854,0.3610878661087866,0.3644351464435146,0.3677824267782427,0.3711297071129708,0.37447698744769875,0.3778242677824267,0.3811715481171548,0.3845188284518829,0.3878661087866109,0.39121338912133885,0.39456066945606694,0.397907949790795,0.401255230125523,0.4046025104602511,0.40794979079497906,0.41129707112970715,0.4146443514644351,0.4179916317991632,0.4213389121338912,0.4246861924686193,0.42803347280334725,0.43138075313807533,0.4347280334728033,0.4380753138075314,0.4414225941422594,0.44476987447698746,0.44811715481171543,0.4514644351464435,0.4548117154811715,0.4581589958158996,0.46150627615062756,0.46485355648535565,0.46820083682008373,0.4715481171548117,0.4748953974895397,0.47824267782426777,0.48158995815899586,0.48493723849372383,0.4882845188284518,0.4916317991631799,0.494979079497908,0.49832635983263596,0.501673640167364,0.505020920502092,0.5083682008368201,0.5117154811715481,0.5150627615062761,0.5184100418410041,0.5217573221757322,0.5251046025104603,0.5284518828451883,0.5317991631799163,0.5351464435146444,0.5384937238493723,0.5418410041841004,0.5451882845188284,0.5485355648535565,0.5518828451882846,0.5552301255230125,0.5585774058577406,0.5619246861924686,0.5652719665271966,0.5686192468619247,0.5719665271966526,0.5753138075313807,0.5786610878661088,0.5820083682008368,0.5853556485355649,0.5887029288702929,0.5920502092050209,0.5953974895397489,0.5987447698744769,0.602092050209205,0.605439330543933,0.608786610878661,0.6121338912133891,0.6154811715481171,0.6188284518828452,0.6221757322175732,0.6255230125523012,0.6288702928870292,0.6322175732217572,0.6355648535564853,0.6389121338912134,0.6422594142259415,0.6456066945606694,0.6489539748953974,0.6523012552301255,0.6556485355648535,0.6589958158995816,0.6623430962343095,0.6656903765690376,0.6690376569037657,0.6723849372384937,0.6757322175732218,0.6790794979079497,0.6824267782426777,0.6857740585774058,0.6891213389121338,0.6924686192468619,0.69581589958159,0.6991631799163179,0.702510460251046,0.705857740585774,0.7092050209205021,0.7125523012552301,0.7158995815899581,0.7192468619246862,0.7225941422594142,0.7259414225941423,0.7292887029288703,0.7326359832635982,0.7359832635983263,0.7393305439330543,0.7426778242677824,0.7460251046025105,0.7493723849372385,0.7527196652719665,0.7560669456066945,0.7594142259414225,0.7627615062761506,0.7661087866108786,0.7694560669456066,0.7728033472803347,0.7761506276150627,0.7794979079497908,0.7828451882845188,0.7861924686192469,0.7895397489539748,0.7928870292887028,0.7962343096234309,0.799581589958159,0.8029288702928871,0.806276150627615,0.809623430962343,0.8129707112970711,0.8163179916317991,0.8196652719665272,0.8230125523012551,0.8263598326359832,0.8297071129707113,0.8330543933054393,0.8364016736401674,0.8397489539748954,0.8430962343096233,0.8464435146443514,0.8497907949790794,0.8531380753138075,0.8564853556485356,0.8598326359832635,0.8631799163179916,0.8665271966527196,0.8698744769874477,0.8732217573221757,0.8765690376569036,0.8799163179916317,0.8832635983263598,0.8866108786610879,0.8899581589958159,0.8933054393305438,0.8966527196652719,0.9],"type":"scatter"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmapgl":[{"type":"heatmapgl","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"margin":{"l":28,"r":12,"t":8,"b":28},"hoverlabel":{"font":{"color":"#111827","size":12},"bgcolor":"white","bordercolor":"rgba(0,0,0,0.15)","align":"left","namelength":-1},"xaxis":{"tickfont":{"size":12,"color":"rgba(0,0,0,0.55)"},"showgrid":false,"zeroline":false,"showline":true,"linecolor":"rgba(0,0,0,0.25)","linewidth":1,"ticks":"outside","ticklen":6,"tickcolor":"rgba(0,0,0,0.25)","title":{},"automargin":true,"fixedrange":true},"yaxis":{"tickfont":{"size":12,"color":"rgba(0,0,0,0.55)"},"showgrid":false,"zeroline":false,"showline":true,"linecolor":"rgba(0,0,0,0.25)","linewidth":1,"ticks":"outside","ticklen":6,"tickcolor":"rgba(0,0,0,0.25)","title":{},"tickformat":".2f","rangemode":"tozero","automargin":true,"fixedrange":true},"autosize":true,"paper_bgcolor":"rgba(0,0,0,0)","plot_bgcolor":"rgba(0,0,0,0)","hovermode":"x unified"}, {"displayModeBar": false, "responsive": true, "scrollZoom": false} ) }; </script> </div>
|
app/src/layouts/ArticleLayout.astro
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
import type { APIContext } from 'astro';
|
3 |
+
|
4 |
+
interface Props {
|
5 |
+
title: string;
|
6 |
+
description?: string;
|
7 |
+
authors?: string[];
|
8 |
+
published?: string; // ISO ou lisible
|
9 |
+
tags?: string[];
|
10 |
+
image?: string; // URL absolue recommandée
|
11 |
+
}
|
12 |
+
|
13 |
+
const {
|
14 |
+
title,
|
15 |
+
description = '',
|
16 |
+
authors = [],
|
17 |
+
published,
|
18 |
+
tags = [],
|
19 |
+
image,
|
20 |
+
} = Astro.props as Props;
|
21 |
+
|
22 |
+
const url = Astro.url?.toString?.() ?? '';
|
23 |
+
const site = (Astro.site ? String(Astro.site) : '') as string;
|
24 |
+
const ogImage = image && image.length > 0
|
25 |
+
? (image.startsWith('http') ? image : (site ? new URL(image, site).toString() : image))
|
26 |
+
: undefined;
|
27 |
+
|
28 |
+
const jsonLd = {
|
29 |
+
'@context': 'https://schema.org',
|
30 |
+
'@type': 'Article',
|
31 |
+
headline: title,
|
32 |
+
description: description || undefined,
|
33 |
+
datePublished: published || undefined,
|
34 |
+
author: authors.map((name) => ({ '@type': 'Person', name })),
|
35 |
+
keywords: tags.length ? tags.join(', ') : undefined,
|
36 |
+
mainEntityOfPage: url || undefined,
|
37 |
+
image: ogImage ? [ogImage] : undefined,
|
38 |
+
};
|
39 |
+
---
|
40 |
+
<html lang="en">
|
41 |
+
<head>
|
42 |
+
<meta charset="utf-8" />
|
43 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
44 |
+
|
45 |
+
<title>{title}</title>
|
46 |
+
{description && <meta name="description" content={description} />}
|
47 |
+
|
48 |
+
<link rel="canonical" href={url} />
|
49 |
+
|
50 |
+
<meta property="og:type" content="article" />
|
51 |
+
<meta property="og:title" content={title} />
|
52 |
+
{description && <meta property="og:description" content={description} />}
|
53 |
+
<meta property="og:url" content={url} />
|
54 |
+
{ogImage && <meta property="og:image" content={ogImage} />}
|
55 |
+
{published && <meta property="article:published_time" content={published} />}
|
56 |
+
{authors.map(a => <meta property="article:author" content={a} />)}
|
57 |
+
|
58 |
+
<meta name="twitter:card" content={ogImage ? 'summary_large_image' : 'summary'} />
|
59 |
+
<meta name="twitter:title" content={title} />
|
60 |
+
{description && <meta name="twitter:description" content={description} />}
|
61 |
+
{ogImage && <meta name="twitter:image" content={ogImage} />}
|
62 |
+
|
63 |
+
<script type="application/ld+json" set:html={JSON.stringify(jsonLd)} />
|
64 |
+
</head>
|
65 |
+
<body>
|
66 |
+
<slot />
|
67 |
+
</body>
|
68 |
+
</html>
|
69 |
+
|
70 |
+
|
app/src/pages/article.mdx
ADDED
@@ -0,0 +1,195 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: "The science Template:\nCraft Beautiful Blogs"
|
3 |
+
description: "A modern, MDX-first research article template with math, citations, and interactive figures."
|
4 |
+
authors:
|
5 |
+
- "Hynek Kydlíček"
|
6 |
+
- "Guilherme Penedo"
|
7 |
+
- "Clémentine Fourier"
|
8 |
+
affiliation: "Hugging Face"
|
9 |
+
published: "Feb 19, 2025"
|
10 |
+
tags:
|
11 |
+
- research
|
12 |
+
- template
|
13 |
+
ogImage: "https://example.com/your-og-image.png"
|
14 |
+
---
|
15 |
+
|
16 |
+
import HtmlFragment from "../components/HtmlFragment.astro";
|
17 |
+
import { Image } from 'astro:assets';
|
18 |
+
import placeholder from "../assets/images/placeholder.png";
|
19 |
+
import audioDemo from "../assets/audio/audio-example.wav";
|
20 |
+
import Aside from "../components/Aside.astro";
|
21 |
+
import visualPoster from "../assets/images/visual-vocabulary-poster.png";
|
22 |
+
|
23 |
+
|
24 |
+
Welcome to this single-page research article template built with Astro and MDX. It’s designed to help you write clear, modern, and interactive technical articles with minimal setup. Whether you cover machine learning, data science, physics, or software topics, this template keeps the authoring flow simple while offering robust features out of the box.
|
25 |
+
|
26 |
+
Reading time: 10–15 minutes.
|
27 |
+
|
28 |
+
In this guide, you’ll learn how to install the template, write content (math, citations, images, code, asides, interactive fragments), customize styles and behavior, and follow a few best practices for publishing.
|
29 |
+
|
30 |
+
## Features
|
31 |
+
|
32 |
+
- Math via KaTeX (remark-math/rehype-katex)
|
33 |
+
- Citations and footnotes
|
34 |
+
- Responsive images with `astro:assets`
|
35 |
+
- Anchored headings and a generated table of contents
|
36 |
+
- Dark/light theme toggle
|
37 |
+
- HTML fragments for self-contained visualizations (e.g., Plotly)
|
38 |
+
|
39 |
+
## Getting Started
|
40 |
+
|
41 |
+
Installation:
|
42 |
+
|
43 |
+
```bash
|
44 |
+
npm install
|
45 |
+
npm run dev
|
46 |
+
```
|
47 |
+
|
48 |
+
Build for production:
|
49 |
+
|
50 |
+
```bash
|
51 |
+
npm run build
|
52 |
+
```
|
53 |
+
|
54 |
+
Deployment: serve the `dist/` directory on any static host. A Docker/Nginx setup is included and works well on Spaces or similar environments.
|
55 |
+
|
56 |
+
Large assets: track binaries (e.g., `.png`, `.wav`) with Git LFS to keep the repository lean. This project is preconfigured to store such files via LFS.
|
57 |
+
|
58 |
+
## Writing Your Content
|
59 |
+
|
60 |
+
Author content in MDX. Below are minimal examples for the core elements.
|
61 |
+
|
62 |
+
### Math
|
63 |
+
|
64 |
+
Inline example: $x^2 + y^2 = z^2$.
|
65 |
+
|
66 |
+
Block (scaled dot-product attention):
|
67 |
+
|
68 |
+
$$
|
69 |
+
\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right) V
|
70 |
+
$$
|
71 |
+
|
72 |
+
```mdx
|
73 |
+
Inline: $x^2 + y^2 = z^2$
|
74 |
+
|
75 |
+
Block:
|
76 |
+
$$
|
77 |
+
\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V
|
78 |
+
$$
|
79 |
+
```
|
80 |
+
|
81 |
+
### Images
|
82 |
+
|
83 |
+
Responsive image using `astro:assets`:
|
84 |
+
|
85 |
+
<Image src={placeholder} alt="Responsive example image" />
|
86 |
+
|
87 |
+
```mdx
|
88 |
+
import { Image } from 'astro:assets'
|
89 |
+
import myImage from '../assets/images/placeholder.png'
|
90 |
+
|
91 |
+
<Image src={myImage} alt="Responsive example image" />
|
92 |
+
```
|
93 |
+
|
94 |
+
### Citations and notes
|
95 |
+
|
96 |
+
A short citation [@example2023]. A footnote[^note].
|
97 |
+
|
98 |
+
[^note]: Example footnote.
|
99 |
+
|
100 |
+
```mdx
|
101 |
+
As shown in [@example2023]. A footnote[^note].
|
102 |
+
|
103 |
+
[^note]: Example footnote.
|
104 |
+
```
|
105 |
+
|
106 |
+
### Interactive fragments
|
107 |
+
|
108 |
+
Plotly example (line):
|
109 |
+
|
110 |
+
<div className="plot-card">
|
111 |
+
<HtmlFragment src="line.html" />
|
112 |
+
</div>
|
113 |
+
|
114 |
+
```mdx
|
115 |
+
import HtmlFragment from '../components/HtmlFragment.astro'
|
116 |
+
|
117 |
+
<HtmlFragment src="line.html" />
|
118 |
+
```
|
119 |
+
|
120 |
+
### Asides
|
121 |
+
|
122 |
+
<Aside>
|
123 |
+
This paragraph presents a key idea concisely.
|
124 |
+
<Fragment slot="aside">
|
125 |
+
Side note for brief context or a definition.
|
126 |
+
</Fragment>
|
127 |
+
</Aside>
|
128 |
+
|
129 |
+
```mdx
|
130 |
+
import Aside from '../components/Aside.astro'
|
131 |
+
|
132 |
+
<Aside>
|
133 |
+
Main paragraph with the core idea.
|
134 |
+
<Fragment slot="aside">Short side note.</Fragment>
|
135 |
+
</Aside>
|
136 |
+
```
|
137 |
+
|
138 |
+
### Minimal table
|
139 |
+
|
140 |
+
| Method | Score |
|
141 |
+
|---|---|
|
142 |
+
| A | 0.78 |
|
143 |
+
| B | 0.86 |
|
144 |
+
|
145 |
+
```mdx
|
146 |
+
| Method | Score |
|
147 |
+
| --- | --- |
|
148 |
+
| A | 0.78 |
|
149 |
+
| B | 0.86 |
|
150 |
+
```
|
151 |
+
|
152 |
+
### Audio
|
153 |
+
|
154 |
+
<audio controls src={audioDemo}>
|
155 |
+
Your browser does not support the audio element.
|
156 |
+
</audio>
|
157 |
+
|
158 |
+
```mdx
|
159 |
+
import audioDemo from '../assets/audio/audio-example.wav'
|
160 |
+
|
161 |
+
<audio controls src={audioDemo}>
|
162 |
+
Your browser does not support the audio element.
|
163 |
+
</audio>
|
164 |
+
```
|
165 |
+
|
166 |
+
## Advanced Customization
|
167 |
+
|
168 |
+
- Styling: customize `src/styles/global.scss` for layout, typography, color scheme, and dark mode variables.
|
169 |
+
- Headings/TOC: tweak the TOC builder in `src/pages/index.astro` to match your preferred levels and behavior.
|
170 |
+
- Components: extend `components/` with bespoke MDX-friendly blocks (callouts, figures, widgets).
|
171 |
+
- Fragments: generate self-contained HTML fragments (e.g., Plotly) and include them via `<HtmlFragment src="..." />`.
|
172 |
+
|
173 |
+
## Best Practices
|
174 |
+
|
175 |
+
- Keep sections short and focused.
|
176 |
+
- Prefer vector or optimized images; use `astro:assets` for responsive delivery.
|
177 |
+
- Annotate figures and code minimally but clearly.
|
178 |
+
- Use math sparingly; explain notation on first use.
|
179 |
+
|
180 |
+
### Choosing the right chart
|
181 |
+
|
182 |
+
Picking the right visualization depends on your goal (compare values, show distribution, part-to-whole, trends, relationships, etc.). The Visual Vocabulary poster below provides a concise mapping from analytical task to chart types.
|
183 |
+
|
184 |
+
<figure>
|
185 |
+
<Image src={visualPoster} alt="Visual Vocabulary: choosing the right chart by task" />
|
186 |
+
<figcaption>
|
187 |
+
Visual Vocabulary: a handy reference to select chart types by purpose (comparison, distribution, part-to-whole, correlation, and more).
|
188 |
+
</figcaption>
|
189 |
+
</figure>
|
190 |
+
|
191 |
+
|
192 |
+
## Conclusions
|
193 |
+
|
194 |
+
This template provides a practical baseline for writing and sharing technical articles with math, citations, and interactive figures. Start simple, iterate on structure and style, and keep content maintainable for future readers and collaborators.
|
195 |
+
|
app/src/pages/index.astro
CHANGED
@@ -1,157 +1,194 @@
|
|
1 |
---
|
2 |
-
import {
|
3 |
-
import
|
4 |
-
import HtmlFragment from
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
---
|
7 |
<html lang="en">
|
8 |
<head>
|
9 |
<meta charset="utf-8" />
|
10 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
11 |
-
<
|
12 |
-
<title
|
|
|
13 |
<script src="https://cdn.plot.ly/plotly-3.0.0.min.js" charset="utf-8"></script>
|
14 |
-
<style>
|
15 |
-
:root { --page-width: 980px; }
|
16 |
-
body { margin:0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji; }
|
17 |
-
main { max-width: var(--page-width); margin: 24px auto; padding: 16px; }
|
18 |
-
.l-page { max-width: var(--page-width); margin: 0 auto; }
|
19 |
-
.l-screen { width: 100%; }
|
20 |
-
figure { margin: 16px 0; }
|
21 |
-
/* Assurer que les images ne dépassent jamais le conteneur */
|
22 |
-
:where(picture, img) { max-width: 100%; width: 100%; height: auto; display: block; }
|
23 |
-
.figcaption, figcaption { color: rgba(0,0,0,.6); font-size: 12px; }
|
24 |
-
.plot-card { background: #fff; border: 1px solid rgba(0,0,0,.1); border-radius: 8px; padding: 12px; }
|
25 |
-
d-contents nav { border-left: 1px solid rgba(0,0,0,.1); padding-left: 16px; margin: 16px 0; }
|
26 |
-
.toc-header { display:flex; align-items:center; gap: 8px; cursor: pointer; user-select:none; }
|
27 |
-
.toc-title { font-weight: 600; }
|
28 |
-
.toggle-icon { transition: transform .2s ease; display:inline-block; }
|
29 |
-
.toggle-icon.collapsed { transform: rotate(-90deg); }
|
30 |
-
.toc-content.collapsed { display:none; }
|
31 |
-
d-article pre, d-code[block] { overflow:auto; background:#f6f8fa; border:1px solid #d0d7de; border-radius:6px; padding:12px; }
|
32 |
-
d-article table { border-collapse: collapse; width: 100%; }
|
33 |
-
d-article th, d-article td { border-bottom: 1px solid rgba(0,0,0,.1); padding: 6px 8px; text-align: left; }
|
34 |
-
aside { color: rgba(0,0,0,.6); font-size: 14px; }
|
35 |
-
</style>
|
36 |
</head>
|
37 |
<body>
|
38 |
-
<
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
130 |
}
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
}
|
151 |
-
}
|
152 |
-
}
|
153 |
-
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
</body>
|
156 |
</html>
|
157 |
|
|
|
1 |
---
|
2 |
+
import Article, { frontmatter as articleFM } from './article.mdx';
|
3 |
+
import Meta from '../components/Meta.astro';
|
4 |
+
import HtmlFragment from '../components/HtmlFragment.astro';
|
5 |
+
import Footer from '../components/Footer.astro';
|
6 |
+
import ThemeToggle from '../components/ThemeToggle.astro';
|
7 |
+
import SeoHead from '../components/SeoHead.astro';
|
8 |
+
import ogDefault from '../assets/images/visual-vocabulary-poster.png';
|
9 |
+
import '../styles/global.scss';
|
10 |
+
const docTitle = articleFM?.title ?? 'Untitled article';
|
11 |
+
// Autoriser un retour à la ligne dans le titre via "\n" ou sauts de ligne YAML
|
12 |
+
const docTitleHtml = (articleFM?.title ?? 'Untitled article')
|
13 |
+
.replace(/\\n/g, '<br/>')
|
14 |
+
.replace(/\n/g, '<br/>');
|
15 |
+
const description = articleFM?.description ?? '';
|
16 |
+
const authors = articleFM?.authors ?? [];
|
17 |
+
const published = articleFM?.published ?? undefined;
|
18 |
+
const tags = articleFM?.tags ?? [];
|
19 |
+
// Prefer ogImage from frontmatter if provided
|
20 |
+
const fmOg = articleFM?.ogImage as string | undefined;
|
21 |
+
const imageAbs = fmOg && fmOg.startsWith('http')
|
22 |
+
? fmOg
|
23 |
+
: (Astro.site ? new URL((fmOg ?? ogDefault.src), Astro.site).toString() : (fmOg ?? ogDefault.src));
|
24 |
---
|
25 |
<html lang="en">
|
26 |
<head>
|
27 |
<meta charset="utf-8" />
|
28 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
29 |
+
<title>{docTitle}</title>
|
30 |
+
<SeoHead title={docTitle} description={description} authors={authors} published={published} tags={tags} image={imageAbs} />
|
31 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" crossorigin="anonymous" />
|
32 |
<script src="https://cdn.plot.ly/plotly-3.0.0.min.js" charset="utf-8"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
</head>
|
34 |
<body>
|
35 |
+
<ThemeToggle />
|
36 |
+
<section class="hero">
|
37 |
+
<h1 class="hero-title" set:html={docTitleHtml}></h1>
|
38 |
+
<div class="hero-banner">
|
39 |
+
<HtmlFragment src="banner.html" />
|
40 |
+
<p class="hero-desc">It's nice to have a cute interactive banner!</p>
|
41 |
+
</div>
|
42 |
+
</section>
|
43 |
+
|
44 |
+
<section class="article-header">
|
45 |
+
<Meta title={docTitle} authors={articleFM?.authors} affiliation={articleFM?.affiliation} published={articleFM?.published} />
|
46 |
+
</section>
|
47 |
+
|
48 |
+
<section class="content-grid">
|
49 |
+
<aside class="toc">
|
50 |
+
<div class="title">Table of Contents</div>
|
51 |
+
<div id="toc-placeholder"></div>
|
52 |
+
</aside>
|
53 |
+
<main>
|
54 |
+
<Article />
|
55 |
+
<style is:inline>
|
56 |
+
/* Inline tweak for details blocks used in MDX */
|
57 |
+
details { background: var(--code-bg) !important; border: 1px solid var(--border-color) !important; border-radius: 6px; margin: 1em 0; padding: .5em .75em; }
|
58 |
+
</style>
|
59 |
+
</main>
|
60 |
+
</section>
|
61 |
+
|
62 |
+
<Footer citationText='"The Distill Blog Template", 2025.' bibtex={`@misc{distill_blog_template,
|
63 |
+
title={The Distill Blog Template},
|
64 |
+
author={Some Authors et al},
|
65 |
+
year={2025},
|
66 |
+
}`}
|
67 |
+
>
|
68 |
+
<div class="references"><h3>References</h3></div>
|
69 |
+
</Footer>
|
70 |
+
|
71 |
+
<!-- Medium-like image zoom (lightbox) -->
|
72 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js"></script>
|
73 |
+
<script>
|
74 |
+
// Init zoom on data-zoomable images, close on scroll/move like Medium
|
75 |
+
const initMediumZoom = () => {
|
76 |
+
if (!window.mediumZoom) return;
|
77 |
+
const isDark = document.documentElement.getAttribute('data-theme') === 'dark';
|
78 |
+
const background = isDark ? 'rgba(0,0,0,.9)' : 'rgba(0,0,0,.85)';
|
79 |
+
const zoom = window.mediumZoom('section.content-grid main img[data-zoomable]', {
|
80 |
+
background,
|
81 |
+
margin: 24,
|
82 |
+
scrollOffset: 0
|
83 |
+
});
|
84 |
+
|
85 |
+
let onMove;
|
86 |
+
const attachCloseOnMove = () => {
|
87 |
+
if (onMove) return;
|
88 |
+
onMove = () => { zoom.close(); };
|
89 |
+
window.addEventListener('mousemove', onMove, { passive: true });
|
90 |
+
window.addEventListener('wheel', onMove, { passive: true });
|
91 |
+
window.addEventListener('touchmove', onMove, { passive: true });
|
92 |
+
};
|
93 |
+
const detachCloseOnMove = () => {
|
94 |
+
if (!onMove) return;
|
95 |
+
window.removeEventListener('mousemove', onMove);
|
96 |
+
window.removeEventListener('wheel', onMove);
|
97 |
+
window.removeEventListener('touchmove', onMove);
|
98 |
+
onMove = null;
|
99 |
+
};
|
100 |
+
|
101 |
+
zoom.on('open', attachCloseOnMove);
|
102 |
+
zoom.on('close', detachCloseOnMove);
|
103 |
+
|
104 |
+
// React to theme toggle
|
105 |
+
const observer = new MutationObserver(() => {
|
106 |
+
const dark = document.documentElement.getAttribute('data-theme') === 'dark';
|
107 |
+
zoom.update({ background: dark ? 'rgba(0,0,0,.9)' : 'rgba(0,0,0,.85)' });
|
108 |
+
});
|
109 |
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
|
110 |
+
};
|
111 |
+
|
112 |
+
if (document.readyState === 'loading') {
|
113 |
+
document.addEventListener('DOMContentLoaded', initMediumZoom, { once: true });
|
114 |
+
} else { initMediumZoom(); }
|
115 |
+
</script>
|
116 |
+
<script>
|
117 |
+
// Open external links in a new tab; keep internal anchors in-page
|
118 |
+
const setExternalTargets = () => {
|
119 |
+
const isExternal = (href) => {
|
120 |
+
try { const u = new URL(href, location.href); return u.origin !== location.origin; } catch { return false; }
|
121 |
+
};
|
122 |
+
document.querySelectorAll('a[href]').forEach(a => {
|
123 |
+
const href = a.getAttribute('href');
|
124 |
+
if (!href) return;
|
125 |
+
if (isExternal(href)) {
|
126 |
+
a.setAttribute('target', '_blank');
|
127 |
+
a.setAttribute('rel', 'noopener noreferrer');
|
128 |
+
} else {
|
129 |
+
a.removeAttribute('target');
|
130 |
}
|
131 |
+
});
|
132 |
+
};
|
133 |
+
if (document.readyState === 'loading') {
|
134 |
+
document.addEventListener('DOMContentLoaded', setExternalTargets, { once: true });
|
135 |
+
} else { setExternalTargets(); }
|
136 |
+
</script>
|
137 |
+
|
138 |
+
<script>
|
139 |
+
// Build TOC from article headings (h2/h3/h4) and render into the sticky aside
|
140 |
+
const buildTOC = () => {
|
141 |
+
const holder = document.getElementById('toc-placeholder');
|
142 |
+
if (!holder || holder.children.length) return;
|
143 |
+
const articleRoot = document.querySelector('section.content-grid main');
|
144 |
+
if (!articleRoot) return;
|
145 |
+
const headings = articleRoot.querySelectorAll('h2, h3, h4');
|
146 |
+
if (!headings.length) return;
|
147 |
+
|
148 |
+
const nav = document.createElement('nav');
|
149 |
+
let ulStack = [document.createElement('ul')];
|
150 |
+
nav.appendChild(ulStack[0]);
|
151 |
+
|
152 |
+
const levelOf = (tag) => tag === 'H2' ? 2 : tag === 'H3' ? 3 : 4;
|
153 |
+
let prev = 2;
|
154 |
+
headings.forEach((h) => {
|
155 |
+
const lvl = levelOf(h.tagName);
|
156 |
+
// ensure id exists
|
157 |
+
if (!h.id) h.id = h.textContent.toLowerCase().replace(/\s+/g, '_');
|
158 |
+
// adjust depth
|
159 |
+
while (lvl > prev) { const ul = document.createElement('ul'); ulStack[ulStack.length-1].lastElementChild?.appendChild(ul); ulStack.push(ul); prev++; }
|
160 |
+
while (lvl < prev) { ulStack.pop(); prev--; }
|
161 |
+
const li = document.createElement('li');
|
162 |
+
const a = document.createElement('a');
|
163 |
+
a.href = '#' + h.id; a.textContent = h.textContent; a.target = '_self';
|
164 |
+
li.appendChild(a);
|
165 |
+
ulStack[ulStack.length-1].appendChild(li);
|
166 |
+
});
|
167 |
+
|
168 |
+
holder.appendChild(nav);
|
169 |
+
|
170 |
+
// active link on scroll
|
171 |
+
const links = holder.querySelectorAll('a');
|
172 |
+
const onScroll = () => {
|
173 |
+
for (let i = headings.length - 1; i >= 0; i--) {
|
174 |
+
const top = headings[i].getBoundingClientRect().top;
|
175 |
+
if (top - 60 <= 0) {
|
176 |
+
links.forEach(l => l.classList.remove('active'));
|
177 |
+
const id = '#' + headings[i].id;
|
178 |
+
const active = Array.from(links).find(l => l.getAttribute('href') === id);
|
179 |
+
active && active.classList.add('active');
|
180 |
+
break;
|
181 |
}
|
182 |
+
}
|
183 |
+
};
|
184 |
+
window.addEventListener('scroll', onScroll);
|
185 |
+
onScroll();
|
186 |
+
};
|
187 |
+
|
188 |
+
if (document.readyState === 'loading') {
|
189 |
+
document.addEventListener('DOMContentLoaded', buildTOC, { once: true });
|
190 |
+
} else { buildTOC(); }
|
191 |
+
</script>
|
192 |
</body>
|
193 |
</html>
|
194 |
|
app/src/styles/global.scss
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// ============================================================================
|
2 |
+
// Theme Variables (inspired by Distill)
|
3 |
+
// ============================================================================
|
4 |
+
:root {
|
5 |
+
--distill-gray: rgb(107, 114, 128);
|
6 |
+
--distill-gray-light: rgb(185, 185, 185);
|
7 |
+
--distill-gray-lighter: rgb(228, 228, 228);
|
8 |
+
--distill-gray-lightest: rgb(245, 245, 245);
|
9 |
+
--distill-blue: #007BFF;
|
10 |
+
|
11 |
+
--text-color: rgba(0,0,0,.85);
|
12 |
+
--muted-color: rgba(0,0,0,.6);
|
13 |
+
--border-color: rgba(0,0,0,.1);
|
14 |
+
|
15 |
+
/* Light surfaces & links */
|
16 |
+
--surface-bg: #fafafa;
|
17 |
+
--code-bg: #f6f8fa;
|
18 |
+
--link-underline: rgba(0,0,0,.4);
|
19 |
+
--link-underline-hover: rgba(0,0,0,.8);
|
20 |
+
|
21 |
+
--spacing-1: 8px;
|
22 |
+
--spacing-2: 12px;
|
23 |
+
--spacing-3: 16px;
|
24 |
+
--spacing-4: 24px;
|
25 |
+
--spacing-5: 32px;
|
26 |
+
}
|
27 |
+
// Theme tokens for dark mode
|
28 |
+
[data-theme="dark"] {
|
29 |
+
--text-color: rgba(255,255,255,.9);
|
30 |
+
--muted-color: rgba(255,255,255,.7);
|
31 |
+
--border-color: rgba(255,255,255,.15);
|
32 |
+
--surface-bg: #12151b;
|
33 |
+
--code-bg: #12151b;
|
34 |
+
--link-underline: rgba(255,255,255,.5);
|
35 |
+
--link-underline-hover: rgba(255,255,255,.9);
|
36 |
+
color-scheme: dark;
|
37 |
+
background: #0f1115;
|
38 |
+
}
|
39 |
+
/* Dark-mode form tweak */
|
40 |
+
[data-theme="dark"] .plotly_input_container > select { background-color: #1a1f27; border-color: var(--border-color); color: var(--text-color); }
|
41 |
+
|
42 |
+
[data-theme="dark"] .plot-card { background: #12151b; border-color: rgba(255,255,255,.15); }
|
43 |
+
[data-theme="dark"] .right-aside .aside-card { background: #12151b; border-color: rgba(255,255,255,.15); }
|
44 |
+
[data-theme="dark"] .content-grid main pre { background: #12151b; border-color: rgba(255,255,255,.15); }
|
45 |
+
[data-theme="dark"] .toc nav { border-left-color: rgba(255,255,255,.15); }
|
46 |
+
[data-theme="dark"] .distill-footer { border-top-color: rgba(255,255,255,.15); }
|
47 |
+
[data-theme="dark"] .citation-text,
|
48 |
+
[data-theme="dark"] .citation-bibtex { background: #12151b; border-color: rgba(255,255,255,.15); color: var(--text-color); }
|
49 |
+
|
50 |
+
// ============================================================================
|
51 |
+
// Base / Reset
|
52 |
+
// ============================================================================
|
53 |
+
html { box-sizing: border-box; }
|
54 |
+
*, *::before, *::after { box-sizing: inherit; }
|
55 |
+
body { margin: 0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji; color: var(--text-color); }
|
56 |
+
|
57 |
+
/* Avoid constraining <main> inside grid; scope container sizing elsewhere if needed */
|
58 |
+
/* main { max-width: 980px; margin: 24px auto; padding: 16px; } */
|
59 |
+
|
60 |
+
// ============================================================================
|
61 |
+
// Typography (inspired by Distill)
|
62 |
+
// ============================================================================
|
63 |
+
html { font-size: 14px; line-height: 1.6; }
|
64 |
+
@media (min-width: 768px) { html { font-size: 16px; } }
|
65 |
+
@media (min-width: 1024px) { html { font-size: 17px; } }
|
66 |
+
|
67 |
+
.content-grid main { color: var(--text-color); }
|
68 |
+
.content-grid main p { margin: 0 0 var(--spacing-3); }
|
69 |
+
|
70 |
+
.content-grid main h2 {
|
71 |
+
font-weight: 600;
|
72 |
+
font-size: clamp(22px, 2.6vw, 32px);
|
73 |
+
line-height: 1.2;
|
74 |
+
margin: var(--spacing-5) 0 var(--spacing-3);
|
75 |
+
padding-bottom: var(--spacing-2);
|
76 |
+
border-bottom: 1px solid var(--border-color);
|
77 |
+
}
|
78 |
+
|
79 |
+
.content-grid main h3 {
|
80 |
+
font-weight: 700;
|
81 |
+
font-size: clamp(18px, 2.1vw, 22px);
|
82 |
+
line-height: 1.25;
|
83 |
+
margin: var(--spacing-4) 0 var(--spacing-2);
|
84 |
+
}
|
85 |
+
|
86 |
+
.content-grid main h4 {
|
87 |
+
font-weight: 600;
|
88 |
+
text-transform: uppercase;
|
89 |
+
font-size: 14px;
|
90 |
+
line-height: 1.2;
|
91 |
+
margin: var(--spacing-3) 0 var(--spacing-2);
|
92 |
+
}
|
93 |
+
|
94 |
+
.content-grid main a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--link-underline); }
|
95 |
+
.content-grid main a:hover { border-bottom: 1px solid var(--link-underline-hover); }
|
96 |
+
|
97 |
+
/* Ne pas souligner les liens de titres dans l'article (pas le TOC) */
|
98 |
+
.content-grid main h2 a,
|
99 |
+
.content-grid main h3 a,
|
100 |
+
.content-grid main h4 a { border-bottom: none; text-decoration: none; }
|
101 |
+
.content-grid main h2 a:hover,
|
102 |
+
.content-grid main h3 a:hover,
|
103 |
+
.content-grid main h4 a:hover { border-bottom: none; text-decoration: none; }
|
104 |
+
|
105 |
+
.content-grid main ul,
|
106 |
+
.content-grid main ol { padding-left: 24px; margin: 0 0 var(--spacing-3); }
|
107 |
+
.content-grid main li { margin-bottom: var(--spacing-2); }
|
108 |
+
.content-grid main li:last-child { margin-bottom: 0; }
|
109 |
+
|
110 |
+
.content-grid main blockquote {
|
111 |
+
border-left: 2px solid var(--border-color);
|
112 |
+
padding-left: var(--spacing-4);
|
113 |
+
font-style: italic;
|
114 |
+
color: var(--muted-color);
|
115 |
+
margin: var(--spacing-4) 0;
|
116 |
+
}
|
117 |
+
|
118 |
+
.content-grid main pre { background: var(--code-bg); border: 1px solid var(--border-color); border-radius: 6px; padding: var(--spacing-3); font-size: 14px; overflow: auto; }
|
119 |
+
.content-grid main code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
|
120 |
+
|
121 |
+
.content-grid main table { border-collapse: collapse; width: 100%; margin: 0 0 var(--spacing-4); }
|
122 |
+
.content-grid main th, .content-grid main td { border-bottom: 1px solid var(--border-color); padding: 6px 8px; text-align: left; font-size: 15px; }
|
123 |
+
.content-grid main thead th { border-bottom: 1px solid var(--border-color); }
|
124 |
+
|
125 |
+
.content-grid main hr { border: none; border-bottom: 1px solid var(--border-color); margin: var(--spacing-5) 0; }
|
126 |
+
|
127 |
+
// ============================================================================
|
128 |
+
// Media / Figures
|
129 |
+
// ============================================================================
|
130 |
+
:where(picture, img) {
|
131 |
+
max-width: 100%;
|
132 |
+
width: 100%;
|
133 |
+
height: auto;
|
134 |
+
display: block;
|
135 |
+
}
|
136 |
+
|
137 |
+
figure { margin: 16px 0; }
|
138 |
+
figcaption { color: var(--muted-color); font-size: 12px; }
|
139 |
+
|
140 |
+
// ============================================================================
|
141 |
+
// Hero (full-bleed)
|
142 |
+
// ============================================================================
|
143 |
+
.hero { width: 100%; padding: 48px 16px 16px; text-align: center; }
|
144 |
+
.hero-title { font-size: clamp(28px, 4vw, 48px); font-weight: 800; line-height: 1.1; margin: 0 0 8px;
|
145 |
+
|
146 |
+
max-width: 60%;
|
147 |
+
margin: auto;}
|
148 |
+
.hero-banner { max-width: 980px; margin: 0 auto; }
|
149 |
+
.hero-desc { color: var(--muted-color); font-style: italic; margin: 0 0 16px 0; }
|
150 |
+
|
151 |
+
// ============================================================================
|
152 |
+
// Meta (byline-like header)
|
153 |
+
// ============================================================================
|
154 |
+
|
155 |
+
.meta {
|
156 |
+
border-top: 1px solid var(--border-color);
|
157 |
+
border-bottom: 1px solid var(--border-color);
|
158 |
+
padding: 1rem 0;
|
159 |
+
font-size: 0.9rem;
|
160 |
+
line-height: 1.8em;
|
161 |
+
}
|
162 |
+
.meta-container {
|
163 |
+
max-width: 720px;
|
164 |
+
display: flex;
|
165 |
+
flex-direction: row;
|
166 |
+
justify-content: space-between;
|
167 |
+
margin: 0 auto;
|
168 |
+
gap: 8px;
|
169 |
+
}
|
170 |
+
.meta-container-cell {
|
171 |
+
display: flex;
|
172 |
+
flex-direction: column;
|
173 |
+
gap: 8px;
|
174 |
+
}
|
175 |
+
.meta-container-cell h3 {
|
176 |
+
margin: 0;
|
177 |
+
font-size: 12px;
|
178 |
+
font-weight: 400;
|
179 |
+
color: var(--muted-color);
|
180 |
+
text-transform: uppercase;
|
181 |
+
letter-spacing: .02em;
|
182 |
+
}
|
183 |
+
.meta-container-cell p { margin: 0; }
|
184 |
+
|
185 |
+
// ============================================================================
|
186 |
+
// Layout – 3-column grid (TOC / Article / Aside)
|
187 |
+
// ============================================================================
|
188 |
+
.content-grid { max-width: 1280px; margin: 0 auto; padding: 0 16px; margin-top: 40px; display: grid; grid-template-columns: 220px minmax(0, 680px) 260px; gap: 32px; align-items: start; }
|
189 |
+
.content-grid > main { max-width: 100%; margin: 0; padding: 0; }
|
190 |
+
|
191 |
+
// TOC (left column)
|
192 |
+
.toc { position: sticky; top: 24px; }
|
193 |
+
.toc nav { border-left: 1px solid var(--border-color); padding-left: 16px; font-size: 13px; }
|
194 |
+
.toc .title { font-weight: 600; font-size: 14px; margin-bottom: 8px; }
|
195 |
+
|
196 |
+
// Hide in-article TOC (duplicated by sticky aside)
|
197 |
+
main > nav:first-of-type { display: none; }
|
198 |
+
|
199 |
+
// TOC look & feel
|
200 |
+
.toc nav ul { margin: 0 0 6px; padding-left: 1em; }
|
201 |
+
.toc nav li { list-style: none; margin: .25em 0; }
|
202 |
+
.toc nav a { color: var(--text-color); text-decoration: none; border-bottom: none; }
|
203 |
+
.toc nav > ul > li > a { font-weight: 700; }
|
204 |
+
.toc nav a:hover { text-decoration: underline solid var(--muted-color); }
|
205 |
+
.toc nav a.active { text-decoration: underline; }
|
206 |
+
|
207 |
+
// Right aside (notes)
|
208 |
+
.right-aside { position: sticky; top: 24px; }
|
209 |
+
.right-aside .aside-card { background: var(--surface-bg); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px; margin-bottom: 10px; font-size: 0.9rem; color: var(--text-color); }
|
210 |
+
|
211 |
+
// Responsive – collapse to single column
|
212 |
+
@media (max-width: 1100px) {
|
213 |
+
.content-grid { grid-template-columns: 1fr; }
|
214 |
+
.toc { position: static; }
|
215 |
+
.right-aside { display: none; }
|
216 |
+
main > nav:first-of-type { display: block; }
|
217 |
+
}
|
218 |
+
|
219 |
+
// ============================================================================
|
220 |
+
// Plotly – fragments & controls
|
221 |
+
// ============================================================================
|
222 |
+
.plot-card { background: var(--code-bg); border: 1px solid var(--border-color); border-radius: 10px; padding: 8px; margin: 8px 0; }
|
223 |
+
.plotly-graph-div { width: 100% !important; min-height: 320px; }
|
224 |
+
@media (max-width: 768px) { .plotly-graph-div { min-height: 260px; } }
|
225 |
+
[id^="plot-"] { display: flex; flex-direction: column; align-items: center; gap: 15px; }
|
226 |
+
.plotly_caption { font-style: italic; margin-top: 10px; }
|
227 |
+
.plotly_controls { display: flex; flex-wrap: wrap; justify-content: center; gap: 30px; }
|
228 |
+
.plotly_input_container { display: flex; align-items: center; flex-direction: column; gap: 10px; }
|
229 |
+
.plotly_input_container > select { padding: 2px 4px; line-height: 1.5em; text-align: center; border-radius: 4px; font-size: 12px; background-color: var(--distill-gray-lightest); outline: none; border: 1px solid var(--distill-gray-lighter); }
|
230 |
+
.plotly_slider { display: flex; align-items: center; gap: 10px; }
|
231 |
+
.plotly_slider > input[type="range"] { -webkit-appearance: none; appearance: none; height: 2px; background: var(--distill-gray-light); border-radius: 5px; outline: none; }
|
232 |
+
.plotly_slider > input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--distill-blue); cursor: pointer; }
|
233 |
+
.plotly_slider > input[type="range"]::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: var(--distill-blue); cursor: pointer; }
|
234 |
+
.plotly_slider > span { font-size: 14px; line-height: 1.6em; min-width: 16px; }
|
235 |
+
|
236 |
+
// ============================================================================
|
237 |
+
// Theme Toggle button (moved from component)
|
238 |
+
// ============================================================================
|
239 |
+
#theme-toggle { display: inline-flex; align-items: center; gap: 8px; border: none; background: transparent; padding: 6px 10px; border-radius: 8px; cursor: pointer; margin: 12px 16px; }
|
240 |
+
#theme-toggle .icon.dark { display: none; }
|
241 |
+
[data-theme="dark"] #theme-toggle .icon.light { display: none; }
|
242 |
+
[data-theme="dark"] #theme-toggle .icon.dark { display: inline; }
|
243 |
+
[data-theme="dark"] #theme-toggle .icon { filter: invert(1) brightness(1.2); }
|
package-lock.json
ADDED
Binary file (16.3 kB). View file
|
|
package.json
ADDED
Binary file (53 Bytes). View file
|
|
python/fragments/banner.py
CHANGED
@@ -2,50 +2,92 @@ import plotly.graph_objects as go
|
|
2 |
import numpy as np
|
3 |
import pandas as pd
|
4 |
|
5 |
-
# Paramètres de l'
|
6 |
-
|
7 |
-
|
8 |
-
a, b = 1.3, 0.45 # demi‑axes (ellipse horizontale)
|
9 |
|
10 |
-
#
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
14 |
|
15 |
-
#
|
16 |
-
|
17 |
-
|
|
|
18 |
|
19 |
-
|
20 |
-
y = cy + b * r_base * np.sin(theta) + noise_y
|
21 |
|
22 |
-
#
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
df = pd.DataFrame({
|
28 |
"x": x,
|
29 |
"y": y,
|
30 |
-
"z": sizes,
|
31 |
})
|
32 |
|
33 |
def get_label(z):
|
34 |
-
if z<0.25:
|
35 |
return "smol dot"
|
36 |
-
if z<0.5:
|
37 |
return "ok-ish dot"
|
38 |
-
if z<0.75:
|
39 |
return "a dot"
|
40 |
else:
|
41 |
return "biiig dot"
|
42 |
|
43 |
-
#
|
44 |
df["label"] = pd.Series(z_raw).apply(get_label)
|
45 |
|
46 |
fig = go.Figure()
|
47 |
|
48 |
-
fig.add_trace(go.
|
49 |
x=df['x'],
|
50 |
y=df['y'],
|
51 |
mode='markers',
|
@@ -53,19 +95,18 @@ fig.add_trace(go.Scatter(
|
|
53 |
size=df['z'],
|
54 |
color=df['z'],
|
55 |
colorscale=[
|
56 |
-
[0, 'rgb(78, 165, 183)'],
|
57 |
-
[0.5, 'rgb(206, 192, 250)'],
|
58 |
-
[1, 'rgb(232, 137, 171)']
|
59 |
],
|
60 |
opacity=0.9,
|
61 |
),
|
62 |
-
|
63 |
hovertemplate="Dot category: %{customdata[0]}",
|
64 |
hoverlabel=dict(namelength=0),
|
65 |
showlegend=False
|
66 |
))
|
67 |
|
68 |
-
|
69 |
fig.update_layout(
|
70 |
autosize=True,
|
71 |
paper_bgcolor='rgba(0,0,0,0)',
|
@@ -88,13 +129,15 @@ fig.update_layout(
|
|
88 |
)
|
89 |
)
|
90 |
|
91 |
-
fig.show()
|
92 |
|
93 |
-
fig.write_html(
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
|
2 |
import numpy as np
|
3 |
import pandas as pd
|
4 |
|
5 |
+
# Paramètres de la scène (mêmes ranges que l'intégration Astro)
|
6 |
+
cx, cy = 1.5, 0.5 # centre
|
7 |
+
a, b = 1.3, 0.45 # étendue max en x/y (ellipse pour l'anisotropie)
|
|
|
8 |
|
9 |
+
# Paramètres de la galaxie en spirale
|
10 |
+
num_points = 3000 # plus de dots
|
11 |
+
num_arms = 3 # nombre de bras spiraux
|
12 |
+
num_turns = 2.1 # nombre de tours par bras
|
13 |
+
angle_jitter = 0.12 # écart angulaire pour évaser les bras
|
14 |
+
pos_noise = 0.015 # bruit de position global
|
15 |
|
16 |
+
# Génération des points sur des bras spiraux (spirale d'Archimède)
|
17 |
+
t = np.random.rand(num_points) * (2 * np.pi * num_turns) # progression le long du bras
|
18 |
+
arm_indices = np.random.randint(0, num_arms, size=num_points)
|
19 |
+
arm_offsets = arm_indices * (2 * np.pi / num_arms)
|
20 |
|
21 |
+
theta = t + arm_offsets + np.random.randn(num_points) * angle_jitter
|
|
|
22 |
|
23 |
+
# Rayon normalisé (0->centre, 1->bord). Puissance <1 pour densifier le centre
|
24 |
+
r_norm = (t / (2 * np.pi * num_turns)) ** 0.9
|
25 |
+
|
26 |
+
# Bruit radial/lateral qui augmente légèrement avec le rayon
|
27 |
+
noise_x = pos_noise * (0.8 + 0.6 * r_norm) * np.random.randn(num_points)
|
28 |
+
noise_y = pos_noise * (0.8 + 0.6 * r_norm) * np.random.randn(num_points)
|
29 |
+
|
30 |
+
# Projection elliptique
|
31 |
+
x_spiral = cx + a * r_norm * np.cos(theta) + noise_x
|
32 |
+
y_spiral = cy + b * r_norm * np.sin(theta) + noise_y
|
33 |
+
|
34 |
+
# Bulbe central (points supplémentaires très proches du centre)
|
35 |
+
bulge_points = int(0.18 * num_points)
|
36 |
+
phi_b = 2 * np.pi * np.random.rand(bulge_points)
|
37 |
+
r_b = (np.random.rand(bulge_points) ** 2.2) * 0.22 # bulbe compact
|
38 |
+
noise_x_b = (pos_noise * 0.6) * np.random.randn(bulge_points)
|
39 |
+
noise_y_b = (pos_noise * 0.6) * np.random.randn(bulge_points)
|
40 |
+
x_bulge = cx + a * r_b * np.cos(phi_b) + noise_x_b
|
41 |
+
y_bulge = cy + b * r_b * np.sin(phi_b) + noise_y_b
|
42 |
+
|
43 |
+
# Concaténation
|
44 |
+
x = np.concatenate([x_spiral, x_bulge])
|
45 |
+
y = np.concatenate([y_spiral, y_bulge])
|
46 |
+
|
47 |
+
# Intensité centrale (pour tailles/couleurs). 1 au centre, ~0 au bord
|
48 |
+
z_spiral = 1 - r_norm
|
49 |
+
z_bulge = 1 - (r_b / max(r_b.max(), 1e-6)) # bulbe très lumineux
|
50 |
+
z_raw = np.concatenate([z_spiral, z_bulge])
|
51 |
+
|
52 |
+
# Tailles: conserver l'échelle 5..10 pour cohérence
|
53 |
+
sizes = (z_raw + 1) * 5
|
54 |
+
|
55 |
+
# Filtrer les petits points proches du centre (esthétique du bulbe)
|
56 |
+
# - on calcule le rayon elliptique normalisé
|
57 |
+
# - on retire les points de petite taille situés trop près du centre
|
58 |
+
central_radius_cut = 0.18
|
59 |
+
min_size_center = 7.5
|
60 |
+
r_total = np.sqrt(((x - cx) / a) ** 2 + ((y - cy) / b) ** 2)
|
61 |
+
mask = ~((r_total <= central_radius_cut) & (sizes < min_size_center))
|
62 |
+
|
63 |
+
# Appliquer le masque
|
64 |
+
x = x[mask]
|
65 |
+
y = y[mask]
|
66 |
+
z_raw = z_raw[mask]
|
67 |
+
sizes = sizes[mask]
|
68 |
|
69 |
df = pd.DataFrame({
|
70 |
"x": x,
|
71 |
"y": y,
|
72 |
+
"z": sizes, # réutilisé pour size+color comme avant
|
73 |
})
|
74 |
|
75 |
def get_label(z):
|
76 |
+
if z < 0.25:
|
77 |
return "smol dot"
|
78 |
+
if z < 0.5:
|
79 |
return "ok-ish dot"
|
80 |
+
if z < 0.75:
|
81 |
return "a dot"
|
82 |
else:
|
83 |
return "biiig dot"
|
84 |
|
85 |
+
# Labels basés sur l'intensité centrale
|
86 |
df["label"] = pd.Series(z_raw).apply(get_label)
|
87 |
|
88 |
fig = go.Figure()
|
89 |
|
90 |
+
fig.add_trace(go.Scattergl(
|
91 |
x=df['x'],
|
92 |
y=df['y'],
|
93 |
mode='markers',
|
|
|
95 |
size=df['z'],
|
96 |
color=df['z'],
|
97 |
colorscale=[
|
98 |
+
[0, 'rgb(78, 165, 183)'],
|
99 |
+
[0.5, 'rgb(206, 192, 250)'],
|
100 |
+
[1, 'rgb(232, 137, 171)']
|
101 |
],
|
102 |
opacity=0.9,
|
103 |
),
|
104 |
+
customdata=df[["label"]],
|
105 |
hovertemplate="Dot category: %{customdata[0]}",
|
106 |
hoverlabel=dict(namelength=0),
|
107 |
showlegend=False
|
108 |
))
|
109 |
|
|
|
110 |
fig.update_layout(
|
111 |
autosize=True,
|
112 |
paper_bgcolor='rgba(0,0,0,0)',
|
|
|
129 |
)
|
130 |
)
|
131 |
|
132 |
+
# fig.show()
|
133 |
|
134 |
+
fig.write_html(
|
135 |
+
"../app/src/fragments/banner.html",
|
136 |
+
include_plotlyjs=False,
|
137 |
+
full_html=False,
|
138 |
+
config={
|
139 |
+
'displayModeBar': False,
|
140 |
+
'responsive': True,
|
141 |
+
'scrollZoom': False,
|
142 |
+
}
|
143 |
+
)
|
python/fragments/bar.py
CHANGED
@@ -105,27 +105,12 @@ post_script = """
|
|
105 |
})();
|
106 |
"""
|
107 |
|
108 |
-
html
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
"scrollZoom": False,
|
117 |
-
"doubleClick": False,
|
118 |
-
"modeBarButtonsToRemove": [
|
119 |
-
"zoom2d", "pan2d", "select2d", "lasso2d",
|
120 |
-
"zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d",
|
121 |
-
"toggleSpikelines"
|
122 |
-
],
|
123 |
-
},
|
124 |
-
)
|
125 |
-
|
126 |
-
output_path = os.path.join(os.path.dirname(__file__), "fragments", "bar.html")
|
127 |
-
os.makedirs(os.path.dirname(output_path), exist_ok=True)
|
128 |
-
with open(output_path, "w", encoding="utf-8") as f:
|
129 |
-
f.write(html)
|
130 |
-
|
131 |
|
|
|
105 |
})();
|
106 |
"""
|
107 |
|
108 |
+
fig.write_html("../app/src/fragments/bar.html",
|
109 |
+
include_plotlyjs=False,
|
110 |
+
full_html=False,
|
111 |
+
config={
|
112 |
+
'displayModeBar': False,
|
113 |
+
'responsive': True,
|
114 |
+
'scrollZoom': False,
|
115 |
+
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
python/fragments/heatmap.py
CHANGED
@@ -114,9 +114,12 @@ html = pio.to_html(
|
|
114 |
},
|
115 |
)
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
122 |
|
|
|
114 |
},
|
115 |
)
|
116 |
|
117 |
+
fig.write_html("../app/src/fragments/heatmap.html",
|
118 |
+
include_plotlyjs=False,
|
119 |
+
full_html=False,
|
120 |
+
config={
|
121 |
+
'displayModeBar': False,
|
122 |
+
'responsive': True,
|
123 |
+
'scrollZoom': False,
|
124 |
+
})
|
125 |
|
python/fragments/line.py
CHANGED
@@ -237,7 +237,12 @@ slider_html = (slider_tpl
|
|
237 |
.replace('__PLOT__', html_plot)
|
238 |
)
|
239 |
|
240 |
-
|
241 |
-
|
242 |
-
|
|
|
|
|
|
|
|
|
|
|
243 |
|
|
|
237 |
.replace('__PLOT__', html_plot)
|
238 |
)
|
239 |
|
240 |
+
fig.write_html("../app/src/fragments/line.html",
|
241 |
+
include_plotlyjs=False,
|
242 |
+
full_html=False,
|
243 |
+
config={
|
244 |
+
'displayModeBar': False,
|
245 |
+
'responsive': True,
|
246 |
+
'scrollZoom': False,
|
247 |
+
})
|
248 |
|
python/poetry.lock
ADDED
@@ -0,0 +1,511 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
|
2 |
+
|
3 |
+
[[package]]
|
4 |
+
name = "certifi"
|
5 |
+
version = "2025.8.3"
|
6 |
+
description = "Python package for providing Mozilla's CA Bundle."
|
7 |
+
optional = false
|
8 |
+
python-versions = ">=3.7"
|
9 |
+
groups = ["main"]
|
10 |
+
files = [
|
11 |
+
{file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"},
|
12 |
+
{file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"},
|
13 |
+
]
|
14 |
+
|
15 |
+
[[package]]
|
16 |
+
name = "charset-normalizer"
|
17 |
+
version = "3.4.3"
|
18 |
+
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
19 |
+
optional = false
|
20 |
+
python-versions = ">=3.7"
|
21 |
+
groups = ["main"]
|
22 |
+
files = [
|
23 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"},
|
24 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"},
|
25 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"},
|
26 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"},
|
27 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"},
|
28 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"},
|
29 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"},
|
30 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"},
|
31 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"},
|
32 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"},
|
33 |
+
{file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"},
|
34 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"},
|
35 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"},
|
36 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"},
|
37 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"},
|
38 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"},
|
39 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"},
|
40 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"},
|
41 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"},
|
42 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"},
|
43 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"},
|
44 |
+
{file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"},
|
45 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"},
|
46 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"},
|
47 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"},
|
48 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"},
|
49 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"},
|
50 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"},
|
51 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"},
|
52 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"},
|
53 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"},
|
54 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"},
|
55 |
+
{file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"},
|
56 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"},
|
57 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"},
|
58 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"},
|
59 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"},
|
60 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"},
|
61 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"},
|
62 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"},
|
63 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"},
|
64 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"},
|
65 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"},
|
66 |
+
{file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"},
|
67 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"},
|
68 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"},
|
69 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"},
|
70 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"},
|
71 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"},
|
72 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"},
|
73 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"},
|
74 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"},
|
75 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"},
|
76 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"},
|
77 |
+
{file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"},
|
78 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"},
|
79 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"},
|
80 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"},
|
81 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"},
|
82 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"},
|
83 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"},
|
84 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"},
|
85 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"},
|
86 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"},
|
87 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"},
|
88 |
+
{file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"},
|
89 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"},
|
90 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"},
|
91 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"},
|
92 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"},
|
93 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"},
|
94 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"},
|
95 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"},
|
96 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"},
|
97 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"},
|
98 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"},
|
99 |
+
{file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"},
|
100 |
+
{file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"},
|
101 |
+
{file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"},
|
102 |
+
]
|
103 |
+
|
104 |
+
[[package]]
|
105 |
+
name = "idna"
|
106 |
+
version = "3.10"
|
107 |
+
description = "Internationalized Domain Names in Applications (IDNA)"
|
108 |
+
optional = false
|
109 |
+
python-versions = ">=3.6"
|
110 |
+
groups = ["main"]
|
111 |
+
files = [
|
112 |
+
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
113 |
+
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
114 |
+
]
|
115 |
+
|
116 |
+
[package.extras]
|
117 |
+
all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
|
118 |
+
|
119 |
+
[[package]]
|
120 |
+
name = "markdown"
|
121 |
+
version = "3.8.2"
|
122 |
+
description = "Python implementation of John Gruber's Markdown."
|
123 |
+
optional = false
|
124 |
+
python-versions = ">=3.9"
|
125 |
+
groups = ["main"]
|
126 |
+
files = [
|
127 |
+
{file = "markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24"},
|
128 |
+
{file = "markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45"},
|
129 |
+
]
|
130 |
+
|
131 |
+
[package.extras]
|
132 |
+
docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"]
|
133 |
+
testing = ["coverage", "pyyaml"]
|
134 |
+
|
135 |
+
[[package]]
|
136 |
+
name = "numpy"
|
137 |
+
version = "2.2.6"
|
138 |
+
description = "Fundamental package for array computing in Python"
|
139 |
+
optional = false
|
140 |
+
python-versions = ">=3.10"
|
141 |
+
groups = ["main"]
|
142 |
+
markers = "python_version == \"3.10\""
|
143 |
+
files = [
|
144 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb"},
|
145 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90"},
|
146 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163"},
|
147 |
+
{file = "numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf"},
|
148 |
+
{file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83"},
|
149 |
+
{file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915"},
|
150 |
+
{file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680"},
|
151 |
+
{file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289"},
|
152 |
+
{file = "numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d"},
|
153 |
+
{file = "numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3"},
|
154 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae"},
|
155 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a"},
|
156 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42"},
|
157 |
+
{file = "numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491"},
|
158 |
+
{file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a"},
|
159 |
+
{file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf"},
|
160 |
+
{file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1"},
|
161 |
+
{file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab"},
|
162 |
+
{file = "numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47"},
|
163 |
+
{file = "numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303"},
|
164 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff"},
|
165 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c"},
|
166 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3"},
|
167 |
+
{file = "numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282"},
|
168 |
+
{file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87"},
|
169 |
+
{file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249"},
|
170 |
+
{file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49"},
|
171 |
+
{file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de"},
|
172 |
+
{file = "numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4"},
|
173 |
+
{file = "numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2"},
|
174 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84"},
|
175 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b"},
|
176 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d"},
|
177 |
+
{file = "numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566"},
|
178 |
+
{file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f"},
|
179 |
+
{file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f"},
|
180 |
+
{file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868"},
|
181 |
+
{file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d"},
|
182 |
+
{file = "numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd"},
|
183 |
+
{file = "numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c"},
|
184 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6"},
|
185 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda"},
|
186 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40"},
|
187 |
+
{file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8"},
|
188 |
+
{file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f"},
|
189 |
+
{file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa"},
|
190 |
+
{file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571"},
|
191 |
+
{file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1"},
|
192 |
+
{file = "numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff"},
|
193 |
+
{file = "numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06"},
|
194 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d"},
|
195 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db"},
|
196 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543"},
|
197 |
+
{file = "numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00"},
|
198 |
+
{file = "numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd"},
|
199 |
+
]
|
200 |
+
|
201 |
+
[[package]]
|
202 |
+
name = "numpy"
|
203 |
+
version = "2.3.2"
|
204 |
+
description = "Fundamental package for array computing in Python"
|
205 |
+
optional = false
|
206 |
+
python-versions = ">=3.11"
|
207 |
+
groups = ["main"]
|
208 |
+
markers = "python_version >= \"3.11\""
|
209 |
+
files = [
|
210 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:852ae5bed3478b92f093e30f785c98e0cb62fa0a939ed057c31716e18a7a22b9"},
|
211 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a0e27186e781a69959d0230dd9909b5e26024f8da10683bd6344baea1885168"},
|
212 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:f0a1a8476ad77a228e41619af2fa9505cf69df928e9aaa165746584ea17fed2b"},
|
213 |
+
{file = "numpy-2.3.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cbc95b3813920145032412f7e33d12080f11dc776262df1712e1638207dde9e8"},
|
214 |
+
{file = "numpy-2.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f75018be4980a7324edc5930fe39aa391d5734531b1926968605416ff58c332d"},
|
215 |
+
{file = "numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20b8200721840f5621b7bd03f8dcd78de33ec522fc40dc2641aa09537df010c3"},
|
216 |
+
{file = "numpy-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f91e5c028504660d606340a084db4b216567ded1056ea2b4be4f9d10b67197f"},
|
217 |
+
{file = "numpy-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fb1752a3bb9a3ad2d6b090b88a9a0ae1cd6f004ef95f75825e2f382c183b2097"},
|
218 |
+
{file = "numpy-2.3.2-cp311-cp311-win32.whl", hash = "sha256:4ae6863868aaee2f57503c7a5052b3a2807cf7a3914475e637a0ecd366ced220"},
|
219 |
+
{file = "numpy-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:240259d6564f1c65424bcd10f435145a7644a65a6811cfc3201c4a429ba79170"},
|
220 |
+
{file = "numpy-2.3.2-cp311-cp311-win_arm64.whl", hash = "sha256:4209f874d45f921bde2cff1ffcd8a3695f545ad2ffbef6d3d3c6768162efab89"},
|
221 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bc3186bea41fae9d8e90c2b4fb5f0a1f5a690682da79b92574d63f56b529080b"},
|
222 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f4f0215edb189048a3c03bd5b19345bdfa7b45a7a6f72ae5945d2a28272727f"},
|
223 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8b1224a734cd509f70816455c3cffe13a4f599b1bf7130f913ba0e2c0b2006c0"},
|
224 |
+
{file = "numpy-2.3.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3dcf02866b977a38ba3ec10215220609ab9667378a9e2150615673f3ffd6c73b"},
|
225 |
+
{file = "numpy-2.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:572d5512df5470f50ada8d1972c5f1082d9a0b7aa5944db8084077570cf98370"},
|
226 |
+
{file = "numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8145dd6d10df13c559d1e4314df29695613575183fa2e2d11fac4c208c8a1f73"},
|
227 |
+
{file = "numpy-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:103ea7063fa624af04a791c39f97070bf93b96d7af7eb23530cd087dc8dbe9dc"},
|
228 |
+
{file = "numpy-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc927d7f289d14f5e037be917539620603294454130b6de200091e23d27dc9be"},
|
229 |
+
{file = "numpy-2.3.2-cp312-cp312-win32.whl", hash = "sha256:d95f59afe7f808c103be692175008bab926b59309ade3e6d25009e9a171f7036"},
|
230 |
+
{file = "numpy-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:9e196ade2400c0c737d93465327d1ae7c06c7cb8a1756121ebf54b06ca183c7f"},
|
231 |
+
{file = "numpy-2.3.2-cp312-cp312-win_arm64.whl", hash = "sha256:ee807923782faaf60d0d7331f5e86da7d5e3079e28b291973c545476c2b00d07"},
|
232 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8d9727f5316a256425892b043736d63e89ed15bbfe6556c5ff4d9d4448ff3b3"},
|
233 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:efc81393f25f14d11c9d161e46e6ee348637c0a1e8a54bf9dedc472a3fae993b"},
|
234 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dd937f088a2df683cbb79dda9a772b62a3e5a8a7e76690612c2737f38c6ef1b6"},
|
235 |
+
{file = "numpy-2.3.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:11e58218c0c46c80509186e460d79fbdc9ca1eb8d8aee39d8f2dc768eb781089"},
|
236 |
+
{file = "numpy-2.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5ad4ebcb683a1f99f4f392cc522ee20a18b2bb12a2c1c42c3d48d5a1adc9d3d2"},
|
237 |
+
{file = "numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:938065908d1d869c7d75d8ec45f735a034771c6ea07088867f713d1cd3bbbe4f"},
|
238 |
+
{file = "numpy-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66459dccc65d8ec98cc7df61307b64bf9e08101f9598755d42d8ae65d9a7a6ee"},
|
239 |
+
{file = "numpy-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7af9ed2aa9ec5950daf05bb11abc4076a108bd3c7db9aa7251d5f107079b6a6"},
|
240 |
+
{file = "numpy-2.3.2-cp313-cp313-win32.whl", hash = "sha256:906a30249315f9c8e17b085cc5f87d3f369b35fedd0051d4a84686967bdbbd0b"},
|
241 |
+
{file = "numpy-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:c63d95dc9d67b676e9108fe0d2182987ccb0f11933c1e8959f42fa0da8d4fa56"},
|
242 |
+
{file = "numpy-2.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:b05a89f2fb84d21235f93de47129dd4f11c16f64c87c33f5e284e6a3a54e43f2"},
|
243 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4e6ecfeddfa83b02318f4d84acf15fbdbf9ded18e46989a15a8b6995dfbf85ab"},
|
244 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:508b0eada3eded10a3b55725b40806a4b855961040180028f52580c4729916a2"},
|
245 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:754d6755d9a7588bdc6ac47dc4ee97867271b17cee39cb87aef079574366db0a"},
|
246 |
+
{file = "numpy-2.3.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f66e7d2b2d7712410d3bc5684149040ef5f19856f20277cd17ea83e5006286"},
|
247 |
+
{file = "numpy-2.3.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de6ea4e5a65d5a90c7d286ddff2b87f3f4ad61faa3db8dabe936b34c2275b6f8"},
|
248 |
+
{file = "numpy-2.3.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3ef07ec8cbc8fc9e369c8dcd52019510c12da4de81367d8b20bc692aa07573a"},
|
249 |
+
{file = "numpy-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:27c9f90e7481275c7800dc9c24b7cc40ace3fdb970ae4d21eaff983a32f70c91"},
|
250 |
+
{file = "numpy-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:07b62978075b67eee4065b166d000d457c82a1efe726cce608b9db9dd66a73a5"},
|
251 |
+
{file = "numpy-2.3.2-cp313-cp313t-win32.whl", hash = "sha256:c771cfac34a4f2c0de8e8c97312d07d64fd8f8ed45bc9f5726a7e947270152b5"},
|
252 |
+
{file = "numpy-2.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:72dbebb2dcc8305c431b2836bcc66af967df91be793d63a24e3d9b741374c450"},
|
253 |
+
{file = "numpy-2.3.2-cp313-cp313t-win_arm64.whl", hash = "sha256:72c6df2267e926a6d5286b0a6d556ebe49eae261062059317837fda12ddf0c1a"},
|
254 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:448a66d052d0cf14ce9865d159bfc403282c9bc7bb2a31b03cc18b651eca8b1a"},
|
255 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:546aaf78e81b4081b2eba1d105c3b34064783027a06b3ab20b6eba21fb64132b"},
|
256 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:87c930d52f45df092f7578889711a0768094debf73cfcde105e2d66954358125"},
|
257 |
+
{file = "numpy-2.3.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:8dc082ea901a62edb8f59713c6a7e28a85daddcb67454c839de57656478f5b19"},
|
258 |
+
{file = "numpy-2.3.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af58de8745f7fa9ca1c0c7c943616c6fe28e75d0c81f5c295810e3c83b5be92f"},
|
259 |
+
{file = "numpy-2.3.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed5527c4cf10f16c6d0b6bee1f89958bccb0ad2522c8cadc2efd318bcd545f5"},
|
260 |
+
{file = "numpy-2.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:095737ed986e00393ec18ec0b21b47c22889ae4b0cd2d5e88342e08b01141f58"},
|
261 |
+
{file = "numpy-2.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5e40e80299607f597e1a8a247ff8d71d79c5b52baa11cc1cce30aa92d2da6e0"},
|
262 |
+
{file = "numpy-2.3.2-cp314-cp314-win32.whl", hash = "sha256:7d6e390423cc1f76e1b8108c9b6889d20a7a1f59d9a60cac4a050fa734d6c1e2"},
|
263 |
+
{file = "numpy-2.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:b9d0878b21e3918d76d2209c924ebb272340da1fb51abc00f986c258cd5e957b"},
|
264 |
+
{file = "numpy-2.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:2738534837c6a1d0c39340a190177d7d66fdf432894f469728da901f8f6dc910"},
|
265 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:4d002ecf7c9b53240be3bb69d80f86ddbd34078bae04d87be81c1f58466f264e"},
|
266 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:293b2192c6bcce487dbc6326de5853787f870aeb6c43f8f9c6496db5b1781e45"},
|
267 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0a4f2021a6da53a0d580d6ef5db29947025ae8b35b3250141805ea9a32bbe86b"},
|
268 |
+
{file = "numpy-2.3.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9c144440db4bf3bb6372d2c3e49834cc0ff7bb4c24975ab33e01199e645416f2"},
|
269 |
+
{file = "numpy-2.3.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f92d6c2a8535dc4fe4419562294ff957f83a16ebdec66df0805e473ffaad8bd0"},
|
270 |
+
{file = "numpy-2.3.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cefc2219baa48e468e3db7e706305fcd0c095534a192a08f31e98d83a7d45fb0"},
|
271 |
+
{file = "numpy-2.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:76c3e9501ceb50b2ff3824c3589d5d1ab4ac857b0ee3f8f49629d0de55ecf7c2"},
|
272 |
+
{file = "numpy-2.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:122bf5ed9a0221b3419672493878ba4967121514b1d7d4656a7580cd11dddcbf"},
|
273 |
+
{file = "numpy-2.3.2-cp314-cp314t-win32.whl", hash = "sha256:6f1ae3dcb840edccc45af496f312528c15b1f79ac318169d094e85e4bb35fdf1"},
|
274 |
+
{file = "numpy-2.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:087ffc25890d89a43536f75c5fe8770922008758e8eeeef61733957041ed2f9b"},
|
275 |
+
{file = "numpy-2.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:092aeb3449833ea9c0bf0089d70c29ae480685dd2377ec9cdbbb620257f84631"},
|
276 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:14a91ebac98813a49bc6aa1a0dfc09513dcec1d97eaf31ca21a87221a1cdcb15"},
|
277 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:71669b5daae692189540cffc4c439468d35a3f84f0c88b078ecd94337f6cb0ec"},
|
278 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:69779198d9caee6e547adb933941ed7520f896fd9656834c300bdf4dd8642712"},
|
279 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2c3271cc4097beb5a60f010bcc1cc204b300bb3eafb4399376418a83a1c6373c"},
|
280 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8446acd11fe3dc1830568c941d44449fd5cb83068e5c70bd5a470d323d448296"},
|
281 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aa098a5ab53fa407fded5870865c6275a5cd4101cfdef8d6fafc48286a96e981"},
|
282 |
+
{file = "numpy-2.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6936aff90dda378c09bea075af0d9c675fe3a977a9d2402f95a87f440f59f619"},
|
283 |
+
{file = "numpy-2.3.2.tar.gz", hash = "sha256:e0486a11ec30cdecb53f184d496d1c6a20786c81e55e41640270130056f8ee48"},
|
284 |
+
]
|
285 |
+
|
286 |
+
[[package]]
|
287 |
+
name = "packaging"
|
288 |
+
version = "25.0"
|
289 |
+
description = "Core utilities for Python packages"
|
290 |
+
optional = false
|
291 |
+
python-versions = ">=3.8"
|
292 |
+
groups = ["main"]
|
293 |
+
files = [
|
294 |
+
{file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"},
|
295 |
+
{file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"},
|
296 |
+
]
|
297 |
+
|
298 |
+
[[package]]
|
299 |
+
name = "pandas"
|
300 |
+
version = "2.3.2"
|
301 |
+
description = "Powerful data structures for data analysis, time series, and statistics"
|
302 |
+
optional = false
|
303 |
+
python-versions = ">=3.9"
|
304 |
+
groups = ["main"]
|
305 |
+
files = [
|
306 |
+
{file = "pandas-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35"},
|
307 |
+
{file = "pandas-2.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b"},
|
308 |
+
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c05e15111221384019897df20c6fe893b2f697d03c811ee67ec9e0bb5a3424"},
|
309 |
+
{file = "pandas-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc03acc273c5515ab69f898df99d9d4f12c4d70dbfc24c3acc6203751d0804cf"},
|
310 |
+
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d25c20a03e8870f6339bcf67281b946bd20b86f1a544ebbebb87e66a8d642cba"},
|
311 |
+
{file = "pandas-2.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21bb612d148bb5860b7eb2c10faacf1a810799245afd342cf297d7551513fbb6"},
|
312 |
+
{file = "pandas-2.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:b62d586eb25cb8cb70a5746a378fc3194cb7f11ea77170d59f889f5dfe3cec7a"},
|
313 |
+
{file = "pandas-2.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1333e9c299adcbb68ee89a9bb568fc3f20f9cbb419f1dd5225071e6cddb2a743"},
|
314 |
+
{file = "pandas-2.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76972bcbd7de8e91ad5f0ca884a9f2c477a2125354af624e022c49e5bd0dfff4"},
|
315 |
+
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b98bdd7c456a05eef7cd21fd6b29e3ca243591fe531c62be94a2cc987efb5ac2"},
|
316 |
+
{file = "pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d81573b3f7db40d020983f78721e9bfc425f411e616ef019a10ebf597aedb2e"},
|
317 |
+
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e190b738675a73b581736cc8ec71ae113d6c3768d0bd18bffa5b9a0927b0b6ea"},
|
318 |
+
{file = "pandas-2.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c253828cb08f47488d60f43c5fc95114c771bbfff085da54bfc79cb4f9e3a372"},
|
319 |
+
{file = "pandas-2.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:9467697b8083f9667b212633ad6aa4ab32436dcbaf4cd57325debb0ddef2012f"},
|
320 |
+
{file = "pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9"},
|
321 |
+
{file = "pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b"},
|
322 |
+
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175"},
|
323 |
+
{file = "pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9"},
|
324 |
+
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4"},
|
325 |
+
{file = "pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811"},
|
326 |
+
{file = "pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae"},
|
327 |
+
{file = "pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e"},
|
328 |
+
{file = "pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9"},
|
329 |
+
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a"},
|
330 |
+
{file = "pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b"},
|
331 |
+
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6"},
|
332 |
+
{file = "pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a"},
|
333 |
+
{file = "pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b"},
|
334 |
+
{file = "pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57"},
|
335 |
+
{file = "pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2"},
|
336 |
+
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9"},
|
337 |
+
{file = "pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2"},
|
338 |
+
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012"},
|
339 |
+
{file = "pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370"},
|
340 |
+
{file = "pandas-2.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88080a0ff8a55eac9c84e3ff3c7665b3b5476c6fbc484775ca1910ce1c3e0b87"},
|
341 |
+
{file = "pandas-2.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d4a558c7620340a0931828d8065688b3cc5b4c8eb674bcaf33d18ff4a6870b4a"},
|
342 |
+
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45178cf09d1858a1509dc73ec261bf5b25a625a389b65be2e47b559905f0ab6a"},
|
343 |
+
{file = "pandas-2.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77cefe00e1b210f9c76c697fedd8fdb8d3dd86563e9c8adc9fa72b90f5e9e4c2"},
|
344 |
+
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:13bd629c653856f00c53dc495191baa59bcafbbf54860a46ecc50d3a88421a96"},
|
345 |
+
{file = "pandas-2.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:36d627906fd44b5fd63c943264e11e96e923f8de77d6016dc2f667b9ad193438"},
|
346 |
+
{file = "pandas-2.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:a9d7ec92d71a420185dec44909c32e9a362248c4ae2238234b76d5be37f208cc"},
|
347 |
+
{file = "pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb"},
|
348 |
+
]
|
349 |
+
|
350 |
+
[package.dependencies]
|
351 |
+
numpy = [
|
352 |
+
{version = ">=1.22.4", markers = "python_version < \"3.11\""},
|
353 |
+
{version = ">=1.23.2", markers = "python_version == \"3.11\""},
|
354 |
+
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
|
355 |
+
]
|
356 |
+
python-dateutil = ">=2.8.2"
|
357 |
+
pytz = ">=2020.1"
|
358 |
+
tzdata = ">=2022.7"
|
359 |
+
|
360 |
+
[package.extras]
|
361 |
+
all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
|
362 |
+
aws = ["s3fs (>=2022.11.0)"]
|
363 |
+
clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
|
364 |
+
compression = ["zstandard (>=0.19.0)"]
|
365 |
+
computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
|
366 |
+
consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
|
367 |
+
excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
|
368 |
+
feather = ["pyarrow (>=10.0.1)"]
|
369 |
+
fss = ["fsspec (>=2022.11.0)"]
|
370 |
+
gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
|
371 |
+
hdf5 = ["tables (>=3.8.0)"]
|
372 |
+
html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
|
373 |
+
mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
|
374 |
+
output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
|
375 |
+
parquet = ["pyarrow (>=10.0.1)"]
|
376 |
+
performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
|
377 |
+
plot = ["matplotlib (>=3.6.3)"]
|
378 |
+
postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
|
379 |
+
pyarrow = ["pyarrow (>=10.0.1)"]
|
380 |
+
spss = ["pyreadstat (>=1.2.0)"]
|
381 |
+
sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
|
382 |
+
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
|
383 |
+
xml = ["lxml (>=4.9.2)"]
|
384 |
+
|
385 |
+
[[package]]
|
386 |
+
name = "plotly"
|
387 |
+
version = "5.24.1"
|
388 |
+
description = "An open-source, interactive data visualization library for Python"
|
389 |
+
optional = false
|
390 |
+
python-versions = ">=3.8"
|
391 |
+
groups = ["main"]
|
392 |
+
files = [
|
393 |
+
{file = "plotly-5.24.1-py3-none-any.whl", hash = "sha256:f67073a1e637eb0dc3e46324d9d51e2fe76e9727c892dde64ddf1e1b51f29089"},
|
394 |
+
{file = "plotly-5.24.1.tar.gz", hash = "sha256:dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae"},
|
395 |
+
]
|
396 |
+
|
397 |
+
[package.dependencies]
|
398 |
+
packaging = "*"
|
399 |
+
tenacity = ">=6.2.0"
|
400 |
+
|
401 |
+
[[package]]
|
402 |
+
name = "python-dateutil"
|
403 |
+
version = "2.9.0.post0"
|
404 |
+
description = "Extensions to the standard Python datetime module"
|
405 |
+
optional = false
|
406 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
407 |
+
groups = ["main"]
|
408 |
+
files = [
|
409 |
+
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
|
410 |
+
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
|
411 |
+
]
|
412 |
+
|
413 |
+
[package.dependencies]
|
414 |
+
six = ">=1.5"
|
415 |
+
|
416 |
+
[[package]]
|
417 |
+
name = "pytz"
|
418 |
+
version = "2025.2"
|
419 |
+
description = "World timezone definitions, modern and historical"
|
420 |
+
optional = false
|
421 |
+
python-versions = "*"
|
422 |
+
groups = ["main"]
|
423 |
+
files = [
|
424 |
+
{file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
|
425 |
+
{file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
|
426 |
+
]
|
427 |
+
|
428 |
+
[[package]]
|
429 |
+
name = "requests"
|
430 |
+
version = "2.32.5"
|
431 |
+
description = "Python HTTP for Humans."
|
432 |
+
optional = false
|
433 |
+
python-versions = ">=3.9"
|
434 |
+
groups = ["main"]
|
435 |
+
files = [
|
436 |
+
{file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
|
437 |
+
{file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
|
438 |
+
]
|
439 |
+
|
440 |
+
[package.dependencies]
|
441 |
+
certifi = ">=2017.4.17"
|
442 |
+
charset_normalizer = ">=2,<4"
|
443 |
+
idna = ">=2.5,<4"
|
444 |
+
urllib3 = ">=1.21.1,<3"
|
445 |
+
|
446 |
+
[package.extras]
|
447 |
+
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
448 |
+
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
449 |
+
|
450 |
+
[[package]]
|
451 |
+
name = "six"
|
452 |
+
version = "1.17.0"
|
453 |
+
description = "Python 2 and 3 compatibility utilities"
|
454 |
+
optional = false
|
455 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
456 |
+
groups = ["main"]
|
457 |
+
files = [
|
458 |
+
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
|
459 |
+
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
|
460 |
+
]
|
461 |
+
|
462 |
+
[[package]]
|
463 |
+
name = "tenacity"
|
464 |
+
version = "9.1.2"
|
465 |
+
description = "Retry code until it succeeds"
|
466 |
+
optional = false
|
467 |
+
python-versions = ">=3.9"
|
468 |
+
groups = ["main"]
|
469 |
+
files = [
|
470 |
+
{file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"},
|
471 |
+
{file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"},
|
472 |
+
]
|
473 |
+
|
474 |
+
[package.extras]
|
475 |
+
doc = ["reno", "sphinx"]
|
476 |
+
test = ["pytest", "tornado (>=4.5)", "typeguard"]
|
477 |
+
|
478 |
+
[[package]]
|
479 |
+
name = "tzdata"
|
480 |
+
version = "2025.2"
|
481 |
+
description = "Provider of IANA time zone data"
|
482 |
+
optional = false
|
483 |
+
python-versions = ">=2"
|
484 |
+
groups = ["main"]
|
485 |
+
files = [
|
486 |
+
{file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"},
|
487 |
+
{file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"},
|
488 |
+
]
|
489 |
+
|
490 |
+
[[package]]
|
491 |
+
name = "urllib3"
|
492 |
+
version = "2.5.0"
|
493 |
+
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
494 |
+
optional = false
|
495 |
+
python-versions = ">=3.9"
|
496 |
+
groups = ["main"]
|
497 |
+
files = [
|
498 |
+
{file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"},
|
499 |
+
{file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"},
|
500 |
+
]
|
501 |
+
|
502 |
+
[package.extras]
|
503 |
+
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
504 |
+
h2 = ["h2 (>=4,<5)"]
|
505 |
+
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
506 |
+
zstd = ["zstandard (>=0.18.0)"]
|
507 |
+
|
508 |
+
[metadata]
|
509 |
+
lock-version = "2.1"
|
510 |
+
python-versions = ">=3.10,<3.13"
|
511 |
+
content-hash = "a7f64c43efcba78952701498a72a8fe503e995841717b2d5de4c9aa20c9a996a"
|
python/pyproject.toml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[tool.poetry]
|
2 |
+
name = "blogpost-fine-tasks-python"
|
3 |
+
version = "0.1.0"
|
4 |
+
description = "Scripts de génération de fragments Plotly et conversions HTML/Markdown pour le blogpost."
|
5 |
+
package-mode = false
|
6 |
+
|
7 |
+
[tool.poetry.dependencies]
|
8 |
+
python = ">=3.10,<3.13"
|
9 |
+
Markdown = "^3.6"
|
10 |
+
requests = "^2.32.3"
|
11 |
+
numpy = "^2.0.0"
|
12 |
+
pandas = "^2.2.2"
|
13 |
+
plotly = "^5.24.0"
|
14 |
+
|
15 |
+
[tool.poetry.scripts]
|
16 |
+
html-to-md = "convert_to_md:main"
|
17 |
+
|
18 |
+
[build-system]
|
19 |
+
requires = ["poetry-core>=1.5.0"]
|
20 |
+
build-backend = "poetry.core.masonry.api"
|