datadoom 0.1.0.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadoom/__init__.py +23 -0
- datadoom/adapters/__init__.py +29 -0
- datadoom/adapters/frameworks.py +94 -0
- datadoom/adapters/loaders.py +72 -0
- datadoom/api/__init__.py +11 -0
- datadoom/api/app.py +109 -0
- datadoom/api/deps.py +30 -0
- datadoom/api/errors.py +89 -0
- datadoom/api/estimate.py +82 -0
- datadoom/api/routes/__init__.py +7 -0
- datadoom/api/routes/artifacts.py +147 -0
- datadoom/api/routes/datasets.py +180 -0
- datadoom/api/routes/meta.py +45 -0
- datadoom/api/routes/plugins.py +22 -0
- datadoom/api/routes/runs.py +144 -0
- datadoom/api/routes/specs.py +73 -0
- datadoom/api/routes/templates.py +30 -0
- datadoom/api/schemas.py +230 -0
- datadoom/api/serializers.py +143 -0
- datadoom/api/state.py +24 -0
- datadoom/api/store_helpers.py +56 -0
- datadoom/api/ws.py +72 -0
- datadoom/cli/__init__.py +1 -0
- datadoom/cli/main.py +313 -0
- datadoom/config.py +108 -0
- datadoom/engine/__init__.py +38 -0
- datadoom/engine/advice.py +289 -0
- datadoom/engine/audit.py +290 -0
- datadoom/engine/causal/__init__.py +15 -0
- datadoom/engine/causal/execute.py +116 -0
- datadoom/engine/causal/functions.py +116 -0
- datadoom/engine/causal/graph.py +54 -0
- datadoom/engine/difficulty/__init__.py +36 -0
- datadoom/engine/difficulty/calibrate.py +235 -0
- datadoom/engine/difficulty/knobs.py +171 -0
- datadoom/engine/difficulty/probes.py +181 -0
- datadoom/engine/dist/__init__.py +35 -0
- datadoom/engine/dist/base.py +46 -0
- datadoom/engine/dist/builtins.py +172 -0
- datadoom/engine/dist/compliance.py +344 -0
- datadoom/engine/dist/providers.py +117 -0
- datadoom/engine/errors.py +32 -0
- datadoom/engine/export/__init__.py +27 -0
- datadoom/engine/export/base.py +49 -0
- datadoom/engine/export/checksums.py +18 -0
- datadoom/engine/export/csv_exporter.py +34 -0
- datadoom/engine/export/json_exporter.py +67 -0
- datadoom/engine/export/metadata.py +58 -0
- datadoom/engine/export/parquet_exporter.py +45 -0
- datadoom/engine/failure/__init__.py +18 -0
- datadoom/engine/failure/apply.py +37 -0
- datadoom/engine/failure/base.py +116 -0
- datadoom/engine/failure/modes.py +442 -0
- datadoom/engine/pipeline.py +418 -0
- datadoom/engine/profile.py +327 -0
- datadoom/engine/progress.py +14 -0
- datadoom/engine/reference.py +338 -0
- datadoom/engine/reports.py +206 -0
- datadoom/engine/rng.py +79 -0
- datadoom/engine/spec/__init__.py +45 -0
- datadoom/engine/spec/hashing.py +57 -0
- datadoom/engine/spec/models.py +238 -0
- datadoom/engine/spec/validate.py +345 -0
- datadoom/engine/timeseries.py +88 -0
- datadoom/jobs/__init__.py +14 -0
- datadoom/jobs/progress.py +155 -0
- datadoom/jobs/worker.py +162 -0
- datadoom/plugin.py +35 -0
- datadoom/plugins/__init__.py +47 -0
- datadoom/plugins/contracts.py +72 -0
- datadoom/plugins/loader.py +125 -0
- datadoom/plugins/registry.py +214 -0
- datadoom/plugins/scaffold.py +434 -0
- datadoom/store/__init__.py +47 -0
- datadoom/store/artifacts.py +67 -0
- datadoom/store/db.py +104 -0
- datadoom/store/migrations/__init__.py +0 -0
- datadoom/store/migrations/env.py +53 -0
- datadoom/store/migrations/script.py.mako +24 -0
- datadoom/store/migrations/versions/0001_init.py +149 -0
- datadoom/store/migrations/versions/0002_report_mutual_information.py +23 -0
- datadoom/store/migrations/versions/0003_run_name.py +23 -0
- datadoom/store/migrations/versions/0004_report_profile.py +24 -0
- datadoom/store/models.py +170 -0
- datadoom/store/repositories.py +279 -0
- datadoom/templates/__init__.py +239 -0
- datadoom/templates/ab_test.datadoom.yaml +46 -0
- datadoom/templates/clinical_deterioration.datadoom.yaml +124 -0
- datadoom/templates/credit_default_challenge.datadoom.yaml +147 -0
- datadoom/templates/customer_churn.datadoom.yaml +60 -0
- datadoom/templates/ecommerce_orders.datadoom.yaml +46 -0
- datadoom/templates/fraud_detection.datadoom.yaml +57 -0
- datadoom/templates/hospital_readmission.datadoom.yaml +61 -0
- datadoom/templates/insurance_claims.datadoom.yaml +43 -0
- datadoom/templates/iot_sensors.datadoom.yaml +44 -0
- datadoom/templates/people_directory.datadoom.yaml +56 -0
- datadoom/templates/predictive_maintenance.datadoom.yaml +107 -0
- datadoom/templates/telecom_churn_challenge.datadoom.yaml +125 -0
- datadoom/version.py +3 -0
- datadoom/webdist/assets/index-V8VAuTJG.js +445 -0
- datadoom/webdist/assets/index-doRjyG5s.css +1 -0
- datadoom/webdist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- datadoom/webdist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- datadoom/webdist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- datadoom/webdist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- datadoom/webdist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- datadoom/webdist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- datadoom/webdist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- datadoom/webdist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- datadoom/webdist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- datadoom/webdist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- datadoom/webdist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- datadoom/webdist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- datadoom/webdist/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2 +0 -0
- datadoom/webdist/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2 +0 -0
- datadoom/webdist/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2 +0 -0
- datadoom/webdist/index.html +15 -0
- datadoom-0.1.0.dev0.dist-info/METADATA +143 -0
- datadoom-0.1.0.dev0.dist-info/RECORD +122 -0
- datadoom-0.1.0.dev0.dist-info/WHEEL +4 -0
- datadoom-0.1.0.dev0.dist-info/entry_points.txt +2 -0
- datadoom-0.1.0.dev0.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter Variable,Inter,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono Variable,JetBrains Mono,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1\.5{top:-.375rem}.bottom-3{bottom:.75rem}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-3{right:.75rem}.right-32{right:8rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-\[-2px\]{top:-2px}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-2{height:.5rem!important}.\!h-3\.5{height:.875rem!important}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[120px\]{height:120px}.h-\[460px\]{height:460px}.h-full{height:100%}.max-h-\[460px\]{max-height:460px}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-\[42vh\]{min-height:42vh}.\!w-2{width:.5rem!important}.\!w-3\.5{width:.875rem!important}.w-0\.5{width:.125rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[240px\]{width:240px}.w-\[244px\]{width:244px}.w-\[270px\]{width:270px}.w-\[68px\]{width:68px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[180px\]{min-width:180px}.max-w-2xl{max-width:42rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[112px\]{max-width:112px}.max-w-\[56px\]{max-width:56px}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-bottom-left{transform-origin:bottom left}.origin-bottom-right{transform-origin:bottom right}.origin-top-left{transform-origin:top left}.origin-top-right{transform-origin:top right}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .2s ease both}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes scale-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.animate-scale-in{animation:scale-in .18s cubic-bezier(.16,1,.3,1) both}@keyframes slide-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slide-up .24s cubic-bezier(.16,1,.3,1) both}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-0{row-gap:0px}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:var(--border)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.\!rounded-\[2px\]{border-radius:2px!important}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[7px\]{border-radius:7px}.rounded-card{border-radius:14px}.rounded-control{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-modal{border-radius:18px}.rounded-pill{border-radius:999px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.\!border-2{border-width:2px!important}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-primary{border-color:var(--primary)!important}.\!border-surface-1{border-color:var(--surface-1)!important}.border-border{border-color:var(--border)}.border-border-strong{border-color:var(--border-strong)}.border-hazard{border-color:var(--hazard)}.border-info{border-color:var(--info)}.border-primary{border-color:var(--primary)}.border-success{border-color:var(--success)}.border-transparent{border-color:transparent}.border-warning{border-color:var(--warning)}.border-white\/10{border-color:#ffffff1a}.border-t-primary{border-top-color:var(--primary)}.\!bg-border-strong{background-color:var(--border-strong)!important}.\!bg-primary{background-color:var(--primary)!important}.\!bg-surface-1{background-color:var(--surface-1)!important}.bg-\[\#15140f\]{--tw-bg-opacity: 1;background-color:rgb(21 20 15 / var(--tw-bg-opacity, 1))}.bg-bg{background-color:var(--bg)}.bg-black\/30{background-color:#0000004d}.bg-border{background-color:var(--border)}.bg-hazard{background-color:var(--hazard)}.bg-hazard-tint{background-color:var(--hazard-tint)}.bg-info-tint{background-color:var(--info-tint)}.bg-primary{background-color:var(--primary)}.bg-primary-tint{background-color:var(--primary-tint)}.bg-success{background-color:var(--success)}.bg-success-tint{background-color:var(--success-tint)}.bg-surface-1{background-color:var(--surface-1)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface-3{background-color:var(--surface-3)}.bg-text-faint{background-color:var(--text-faint)}.bg-transparent{background-color:transparent}.bg-warning{background-color:var(--warning)}.bg-warning-tint{background-color:var(--warning-tint)}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pl-1{padding-left:.25rem}.pl-3{padding-left:.75rem}.pl-9{padding-left:2.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-display{font-family:Space Grotesk Variable,Space Grotesk,Georgia,serif}.font-mono{font-family:JetBrains Mono Variable,JetBrains Mono,ui-monospace,monospace}.font-sans{font-family:Inter Variable,Inter,system-ui,sans-serif}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[15px\]{font-size:15px}.text-\[22px\]{font-size:22px}.text-\[36px\]{font-size:36px}.text-\[40px\]{font-size:40px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.not-italic{font-style:normal}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.\!text-white\/40{color:#fff6!important}.text-hazard{color:var(--hazard)}.text-info{color:var(--info)}.text-primary{color:var(--primary)}.text-success{color:var(--success)}.text-text{color:var(--text)}.text-text-faint{color:var(--text-faint)}.text-text-muted{color:var(--text-muted)}.text-warning{color:var(--warning)}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/25{color:#ffffff40}.text-white\/30{color:#ffffff4d}.text-white\/40{color:#fff6}.text-white\/70{color:#ffffffb3}.text-white\/75{color:#ffffffbf}.accent-\[var\(--primary\)\],.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.shadow-card{--tw-shadow: var(--shadow-card);--tw-shadow-colored: var(--shadow-card);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lift{--tw-shadow: var(--shadow-lift);--tw-shadow-colored: var(--shadow-lift);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-pop{--tw-shadow: var(--shadow-pop);--tw-shadow-colored: var(--shadow-pop);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-soft{--tw-shadow: var(--shadow-soft);--tw-shadow-colored: var(--shadow-soft);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: var(--primary)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[2px\]{--tw-backdrop-blur: blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[3px\]{--tw-backdrop-blur: blur(3px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--bg: #faf9f6;--surface-1: #ffffff;--surface-2: #f4f2ec;--surface-3: #ece9e0;--border: #e6e2d8;--border-strong: #d2ccbd;--text: #181715;--text-muted: #65625b;--text-faint: #9a958a;--primary: #5b43e6;--primary-hover: #4a34cf;--primary-tint: #ece9fc;--hazard: #c8402a;--hazard-tint: #f8e7e2;--success: #2e7d43;--success-tint: #e3f0e6;--warning: #b7791f;--warning-tint: #f6ecd9;--info: #0e7c8b;--info-tint: #dcf0f2;--shadow-soft: 0 1px 2px rgba(24, 23, 21, .04);--shadow-card: 0 1px 2px rgba(24, 23, 21, .04), 0 8px 24px rgba(24, 23, 21, .05);--shadow-lift: 0 2px 4px rgba(24, 23, 21, .05), 0 12px 36px rgba(24, 23, 21, .09);--shadow-pop: 0 8px 16px rgba(24, 23, 21, .08), 0 24px 56px rgba(24, 23, 21, .16);color-scheme:light}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter Variable,Inter,system-ui,sans-serif;font-feature-settings:"cv05" 1,"ss01" 1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.font-display{font-family:Space Grotesk Variable,Space Grotesk,Georgia,serif;font-feature-settings:"ss01" 1,"ss02" 1;letter-spacing:-.018em}.tnum{font-variant-numeric:tabular-nums}.kicker{font-family:Inter Variable,Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.16em;font-size:10.5px;font-weight:600;color:var(--text-faint)}.wordmark{font-family:Space Grotesk Variable,Space Grotesk,Georgia,serif;font-weight:600;letter-spacing:-.03em;font-feature-settings:"ss01" 1}.wordmark-dot{color:var(--primary)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:padding-box}.dotgrid{background-image:radial-gradient(var(--border) 1px,transparent 1px);background-size:22px 22px}.dotgrid-strong{background-image:radial-gradient(var(--border-strong) 1px,transparent 1px);background-size:26px 26px}.ring-focus{outline:none}.ring-focus:focus-visible{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--primary)}.react-flow__attribution{display:none}.react-flow__controls{box-shadow:var(--shadow-card);border-radius:10px;overflow:hidden;border:1px solid var(--border)}.react-flow__controls-button{background:var(--surface-1);border-bottom:1px solid var(--border);color:var(--text-muted)}.react-flow__controls-button:hover{background:var(--surface-2)}.react-flow__handle{transition:transform .12s ease,background .12s ease}.react-flow__edge-path{transition:stroke .12s ease}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:-translate-y-1:hover{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:\!scale-125:hover{--tw-scale-x: 1.25 !important;--tw-scale-y: 1.25 !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.hover\:border-border-strong:hover{border-color:var(--border-strong)}.hover\:border-primary:hover{border-color:var(--primary)}.hover\:\!bg-primary:hover{background-color:var(--primary)!important}.hover\:bg-hazard-tint:hover{background-color:var(--hazard-tint)}.hover\:bg-primary-hover:hover{background-color:var(--primary-hover)}.hover\:bg-primary-tint:hover{background-color:var(--primary-tint)}.hover\:bg-surface-2:hover{background-color:var(--surface-2)}.hover\:text-hazard:hover{color:var(--hazard)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-text:hover{color:var(--text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-lift:hover{--tw-shadow: var(--shadow-lift);--tw-shadow-colored: var(--shadow-lift);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:bg-surface-1:focus{background-color:var(--surface-1)}.focus\:bg-surface-2:focus{background-color:var(--surface-2)}.focus\:px-1:focus{padding-left:.25rem;padding-right:.25rem}.focus\:px-2:focus{padding-left:.5rem;padding-right:.5rem}.focus\:py-1:focus{padding-top:.25rem;padding-bottom:.25rem}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-primary:focus{--tw-ring-color: var(--primary)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-hazard:focus-visible{--tw-ring-color: var(--hazard)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color: var(--primary)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-bg:focus-visible{--tw-ring-offset-color: var(--bg)}.active\:translate-y-px:active{--tw-translate-y: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-70:disabled{opacity:.7}.group:hover .group-hover\:text-primary{color:var(--primary)}.group:hover .group-hover\:text-text{color:var(--text)}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 768px){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(300px\,380px\)_1fr\]{grid-template-columns:minmax(300px,380px) 1fr}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>DataDoom — synthetic data lab</title>
|
|
7
|
+
<meta name="description" content="Local-first engine for controllable, reproducible synthetic data." />
|
|
8
|
+
<meta name="color-scheme" content="light" />
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-V8VAuTJG.js"></script>
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-doRjyG5s.css">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: datadoom
|
|
3
|
+
Version: 0.1.0.dev0
|
|
4
|
+
Summary: Local-first, open-source engine for controllable, reproducible synthetic data.
|
|
5
|
+
Project-URL: Homepage, https://github.com/SanthoshReddy352/datadoom
|
|
6
|
+
Project-URL: Repository, https://github.com/SanthoshReddy352/datadoom
|
|
7
|
+
Author: Santhosh Reddy
|
|
8
|
+
License-Expression: Apache-2.0
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: causal,dataset,machine-learning,reproducible,synthetic-data
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Requires-Dist: mimesis<20,>=19
|
|
19
|
+
Requires-Dist: networkx<4,>=3.1
|
|
20
|
+
Requires-Dist: numpy<3,>=1.26
|
|
21
|
+
Requires-Dist: pandas<3,>=2.1
|
|
22
|
+
Requires-Dist: pydantic<3,>=2.5
|
|
23
|
+
Requires-Dist: pyyaml<7,>=6
|
|
24
|
+
Requires-Dist: scikit-learn<2,>=1.4
|
|
25
|
+
Requires-Dist: scipy<2,>=1.11
|
|
26
|
+
Requires-Dist: typer<1,>=0.12
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: alembic<2,>=1.13; extra == 'dev'
|
|
29
|
+
Requires-Dist: fastapi<1,>=0.110; extra == 'dev'
|
|
30
|
+
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
31
|
+
Requires-Dist: hypothesis>=6; extra == 'dev'
|
|
32
|
+
Requires-Dist: import-linter>=2; extra == 'dev'
|
|
33
|
+
Requires-Dist: mypy>=1.8; extra == 'dev'
|
|
34
|
+
Requires-Dist: pyarrow<19,>=15; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
37
|
+
Requires-Dist: python-multipart>=0.0.9; extra == 'dev'
|
|
38
|
+
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
39
|
+
Requires-Dist: sqlalchemy<3,>=2.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
41
|
+
Requires-Dist: uvicorn[standard]<1,>=0.29; extra == 'dev'
|
|
42
|
+
Requires-Dist: websockets>=12; extra == 'dev'
|
|
43
|
+
Provides-Extra: docs
|
|
44
|
+
Requires-Dist: mkdocs-include-markdown-plugin<8,>=6; extra == 'docs'
|
|
45
|
+
Requires-Dist: mkdocs-material<10,>=9.5; extra == 'docs'
|
|
46
|
+
Requires-Dist: mkdocs<2,>=1.6; extra == 'docs'
|
|
47
|
+
Provides-Extra: hf
|
|
48
|
+
Requires-Dist: datasets>=2.14; extra == 'hf'
|
|
49
|
+
Provides-Extra: parquet
|
|
50
|
+
Requires-Dist: pyarrow<19,>=15; extra == 'parquet'
|
|
51
|
+
Provides-Extra: server
|
|
52
|
+
Requires-Dist: alembic<2,>=1.13; extra == 'server'
|
|
53
|
+
Requires-Dist: fastapi<1,>=0.110; extra == 'server'
|
|
54
|
+
Requires-Dist: python-multipart>=0.0.9; extra == 'server'
|
|
55
|
+
Requires-Dist: sqlalchemy<3,>=2.0; extra == 'server'
|
|
56
|
+
Requires-Dist: uvicorn[standard]<1,>=0.29; extra == 'server'
|
|
57
|
+
Requires-Dist: websockets>=12; extra == 'server'
|
|
58
|
+
Provides-Extra: tf
|
|
59
|
+
Requires-Dist: tensorflow>=2.13; extra == 'tf'
|
|
60
|
+
Provides-Extra: torch
|
|
61
|
+
Requires-Dist: torch<3,>=2; extra == 'torch'
|
|
62
|
+
Description-Content-Type: text/markdown
|
|
63
|
+
|
|
64
|
+
# DataDoom
|
|
65
|
+
|
|
66
|
+
**Local-first, open-source engine for controllable, reproducible synthetic data.**
|
|
67
|
+
|
|
68
|
+
[](https://github.com/SanthoshReddy352/datadoom/actions/workflows/ci.yml)
|
|
69
|
+
[](https://github.com/SanthoshReddy352/datadoom/actions/workflows/repro-matrix.yml)
|
|
70
|
+
[](https://santhoshreddy352.github.io/datadoom/)
|
|
71
|
+
[](https://www.python.org/)
|
|
72
|
+
[](LICENSE)
|
|
73
|
+
|
|
74
|
+
Design the dataset the way you reason about it — distributions, causal relationships,
|
|
75
|
+
difficulty, and failure modes — and regenerate it identically, forever, from a single spec file.
|
|
76
|
+
|
|
77
|
+
> **North star:** a synthetic dataset should be as version-controllable, shareable, and
|
|
78
|
+
> reproducible as source code.
|
|
79
|
+
|
|
80
|
+
📖 **Docs:** <https://santhoshreddy352.github.io/datadoom/> · authoritative design in
|
|
81
|
+
[`docs_v2/`](docs_v2/) (start at [`docs_v2/00_README_Index.md`](docs_v2/00_README_Index.md)).
|
|
82
|
+
|
|
83
|
+
## Status
|
|
84
|
+
|
|
85
|
+
**Phases 0–5 complete; 1.0 hardening underway.** The deterministic engine, server +
|
|
86
|
+
web Canvas, causal engine, failure injection, difficulty targeting, the plugin system,
|
|
87
|
+
exporters, templates, time-series, framework adapters, and the AI spec-authoring
|
|
88
|
+
manifest all ship. Remaining for 1.0 is hardening (docs, release automation, the repro
|
|
89
|
+
matrix); see [`status.md`](status.md). Optional team mode is a deferred future addon.
|
|
90
|
+
|
|
91
|
+
## Install
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install datadoom # engine + CLI
|
|
95
|
+
pip install "datadoom[server]" # + web Canvas (datadoom serve)
|
|
96
|
+
pip install "datadoom[parquet]" # + Parquet export
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Quickstart
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# generate a dataset from a spec
|
|
103
|
+
datadoom run examples/causal-fraud.datadoom.yaml --seed 42 --out out/
|
|
104
|
+
|
|
105
|
+
# validate a spec
|
|
106
|
+
datadoom validate examples/causal-fraud.datadoom.yaml
|
|
107
|
+
|
|
108
|
+
# verify a run reproduces bitwise from spec + seed
|
|
109
|
+
datadoom verify examples/causal-fraud.datadoom.yaml --seed 42 --against out/
|
|
110
|
+
|
|
111
|
+
# start from a built-in domain template
|
|
112
|
+
datadoom template use fraud-detection --out my.datadoom.yaml
|
|
113
|
+
|
|
114
|
+
# launch the web Canvas (needs the [server] extra)
|
|
115
|
+
datadoom serve
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Development
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
python -m venv .venv
|
|
122
|
+
.venv\Scripts\activate # Windows
|
|
123
|
+
# source .venv/bin/activate # macOS/Linux
|
|
124
|
+
pip install -e ".[dev]"
|
|
125
|
+
|
|
126
|
+
ruff check src tests # lint
|
|
127
|
+
lint-imports # architecture boundaries
|
|
128
|
+
mypy # type-check
|
|
129
|
+
pytest # test suite
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## The reproducibility guarantee (scoped)
|
|
133
|
+
|
|
134
|
+
Given the same spec and seed, on the **pinned path** (single-threaded BLAS, pinned
|
|
135
|
+
library versions, CPU, same OS/arch), DataDoom produces a **bitwise-identical** dataset.
|
|
136
|
+
Across different OS/architectures we guarantee **statistical** — not bitwise —
|
|
137
|
+
equivalence (FP reductions differ). The cross-OS × cross-Python reproducibility matrix
|
|
138
|
+
enforces this in CI. See
|
|
139
|
+
[`docs_v2/13_Testing_and_Reproducibility_Strategy.md`](docs_v2/13_Testing_and_Reproducibility_Strategy.md).
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
[Apache-2.0](LICENSE).
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
datadoom/__init__.py,sha256=UtLnsgPfnoNF2Zo9W0ngrI1Lgr3hR2c6sBAGs7nTBKk,508
|
|
2
|
+
datadoom/config.py,sha256=rBuqHm3PwPMEYr536B5qLhN9SKvGZPBWEFdg5cHlKh4,3228
|
|
3
|
+
datadoom/plugin.py,sha256=nfKavuNl3Us6H3Sz6pYz2u0RyOWnML5Vnn1E6BAm8RY,835
|
|
4
|
+
datadoom/version.py,sha256=LMe3pVJTRN1UJa3naUVE4skMI4BVUdVCktCEuGIfPSI,102
|
|
5
|
+
datadoom/adapters/__init__.py,sha256=6AmgYNC8rgCFBQ_taal6SD7eyn1LrFOPag2bQtDTA2s,1222
|
|
6
|
+
datadoom/adapters/frameworks.py,sha256=_o6HGIBDTp_xjnaLhLuCDhooafBtg1Bo-IQ1PFBGsJk,3036
|
|
7
|
+
datadoom/adapters/loaders.py,sha256=MMewccf8cWurbFRWDUnaY4AUHRN9pepO9CeKqaNJlQ0,2293
|
|
8
|
+
datadoom/api/__init__.py,sha256=QbU_7Dfd_cse6xrbffuk6BRQ8eBBLVDjkSSm0EO1hvU,264
|
|
9
|
+
datadoom/api/app.py,sha256=CIIHz8JIbtOgu_H5fZgV1TP08REle03Gtf74LBvoR6k,3828
|
|
10
|
+
datadoom/api/deps.py,sha256=fQDe5gJCPfHgK_H6hUUkAHsWWH_EDa46R9Sqyw_ufBU,840
|
|
11
|
+
datadoom/api/errors.py,sha256=zFHYp-t-wqw7FbknGgW435egm9A2wSQhLKnquqFPuPU,3577
|
|
12
|
+
datadoom/api/estimate.py,sha256=goZLeuijitLQuzVZjyWbhU1ffY6-yDGExKFRRUxHpDo,2724
|
|
13
|
+
datadoom/api/schemas.py,sha256=salsUoTnx6tbqqRp5O2_9Dyuu4imDslOZ1SXNGJci30,5272
|
|
14
|
+
datadoom/api/serializers.py,sha256=SvoVOvwJWXPlGIbULOKquYivucyVK1pGucGA7g03LUE,4327
|
|
15
|
+
datadoom/api/state.py,sha256=xUVf95o6AgxaqWjk0pzhkH2VskLRPwB5JTQCQ0oI_9g,785
|
|
16
|
+
datadoom/api/store_helpers.py,sha256=la2NoJdVHzSQH5G0bwDtJi8NIOHk-qgCcIPUl0SQLYI,1540
|
|
17
|
+
datadoom/api/ws.py,sha256=6AQN3R9hM7zWXse3FJTsCwcvskfo466uSjPZ3f8LBCE,2301
|
|
18
|
+
datadoom/api/routes/__init__.py,sha256=lseENRrp0Cd3gIW163ZFSyCwqp-y92mA-pgN7-9b5Bw,278
|
|
19
|
+
datadoom/api/routes/artifacts.py,sha256=2UUQIX2ZacL0JFRGLemfC5TirwV_x9fT_r25ptkra6M,5235
|
|
20
|
+
datadoom/api/routes/datasets.py,sha256=_d5AuWAU600G3pxDpdfMH9vsTb1HbrKB8B41UoyLoc4,6392
|
|
21
|
+
datadoom/api/routes/meta.py,sha256=1s6t36jbCmFgVDWZh8GjnFgzNEXE01W02snDi0x_rTo,1287
|
|
22
|
+
datadoom/api/routes/plugins.py,sha256=LdwuB-hAj7lqbt6vZSi9NywGYdUyBGBXgJawnHezpEU,702
|
|
23
|
+
datadoom/api/routes/runs.py,sha256=nG-PQDEIW8oWk3ZarrDtBH_40s4Lrb5jy9ZvGgLUbU4,5149
|
|
24
|
+
datadoom/api/routes/specs.py,sha256=ZFyPebMaAKlfkj7KcU-DcjlNxiqyvgTtUTEmXtP5_Gg,2598
|
|
25
|
+
datadoom/api/routes/templates.py,sha256=9j47zMhQiNUj3rUbNvRJ1XSS7-t77N3wGVdD9lAR65k,1068
|
|
26
|
+
datadoom/cli/__init__.py,sha256=SITQfstEf4hg1GoeCgn19NqMDShRab0HuxayIJQy8is,39
|
|
27
|
+
datadoom/cli/main.py,sha256=-q3iZWO82Jfm5kA_pph1WwK0hPPVeaS00w6-QT4Z0nk,11498
|
|
28
|
+
datadoom/engine/__init__.py,sha256=3bwtI6yEe1_TkGbaq6W-GscokXKAar1Nv7qd0EVBZng,944
|
|
29
|
+
datadoom/engine/advice.py,sha256=I1eHjhWzdyYl_6TrTATuqkyjcL2sr5OeQPY8IBsSwx8,12744
|
|
30
|
+
datadoom/engine/audit.py,sha256=vIQoUujJVV2lWc52VOzcEVVOrFu3mUPoHbhKmDed9qY,10703
|
|
31
|
+
datadoom/engine/errors.py,sha256=8CH8JjAVNxztn8HGPZaE9mxP-smy_fA46X3j0rto4jc,982
|
|
32
|
+
datadoom/engine/pipeline.py,sha256=DEQwlIduv58NJgMpsAJr_O1gBTBVFO1iUaj0GozucXk,15213
|
|
33
|
+
datadoom/engine/profile.py,sha256=W44QOZtSB9jBcwZi4iA7hDoz0aLc34IZKE5OUAiveAw,12644
|
|
34
|
+
datadoom/engine/progress.py,sha256=k6dx2ZxJI0OryFpB7U63aa5VRcohiM3vZK_-3lUo1gg,423
|
|
35
|
+
datadoom/engine/reference.py,sha256=zbf5RnxwInSrv65L6bjNW6HKw5qFEfIaKLQQp943gIw,15048
|
|
36
|
+
datadoom/engine/reports.py,sha256=-XxKUZHR_AYfpA8JWUbJUvQXmb0dL3PdBZJSzFmN5zo,7672
|
|
37
|
+
datadoom/engine/rng.py,sha256=0UOPwUx7fVSdTIcEjAFf5S2LWxpYCKsxeHJSA0fFKFU,3151
|
|
38
|
+
datadoom/engine/timeseries.py,sha256=HCpEhfWQYF-iLUA70gBlSa0jH36StQvlQoPu8CqCx58,2904
|
|
39
|
+
datadoom/engine/causal/__init__.py,sha256=u1iUviz3tEazzN9sA1-qMi8VpooiI2dC6DOt9BSG8GY,390
|
|
40
|
+
datadoom/engine/causal/execute.py,sha256=MSTDUx6J0szWNYVmtpfuxNRXOT6chSTMHQxsjTbeLpQ,4270
|
|
41
|
+
datadoom/engine/causal/functions.py,sha256=5ABYZdvaSXwDdv4EJ4iLNsuq9W_QLkF853onRcEjvsA,3519
|
|
42
|
+
datadoom/engine/causal/graph.py,sha256=Pq7FwpdovxUqs7t_L9Gfl7LZmBaNsvCixoeUKD7ZBbY,2360
|
|
43
|
+
datadoom/engine/difficulty/__init__.py,sha256=329sT6pQnlSiNUrPmpiHB3dibNKf7ijD11G5FxMGggE,1023
|
|
44
|
+
datadoom/engine/difficulty/calibrate.py,sha256=1MFgN7hTC7h2BD7z-Izee_jSQgJa0U0gdy1KBrjYOoo,8289
|
|
45
|
+
datadoom/engine/difficulty/knobs.py,sha256=BgDStfoNb5no3BNRPgARBBh4MjdrRJkGq_Nf7OTIAtw,6936
|
|
46
|
+
datadoom/engine/difficulty/probes.py,sha256=jOxuNoIWfDUoKJXQx2r4vUkoCRpPGSL753kqXuaIqj4,7145
|
|
47
|
+
datadoom/engine/dist/__init__.py,sha256=Rwy6Z0RoddEndjPSU2tiGdYCov8dEBNOeamPASR0dB0,754
|
|
48
|
+
datadoom/engine/dist/base.py,sha256=HAQVgcbsuyWHa6AXYqJ7zrnvxVQ-17hK02rcY-VMMjM,1854
|
|
49
|
+
datadoom/engine/dist/builtins.py,sha256=HeGz5DgYiTBhzU0uU4Mw0J0BvMJZepayrIbweuF_Fkw,5545
|
|
50
|
+
datadoom/engine/dist/compliance.py,sha256=hZ4BbwE4pZFZUbFFooLxl3bz6jLfdtCDqyZZ5NM_VFE,13792
|
|
51
|
+
datadoom/engine/dist/providers.py,sha256=4GF8JfkNMkwAtAnLQa2DHVYVewAfJ5v9GgDts9L72RM,4416
|
|
52
|
+
datadoom/engine/export/__init__.py,sha256=dj03wsgkDqqlap5oNRgUhNLQG-SYx1yvxLIg6qka0vI,677
|
|
53
|
+
datadoom/engine/export/base.py,sha256=J0cgY_k4bDawbBcWoj5HBco8fZATKSzZvYMNievbQSw,1366
|
|
54
|
+
datadoom/engine/export/checksums.py,sha256=5PoAQMvKMMR-9jpKSKAO4C6cS-xQzNC42ckJLWR-ZdE,474
|
|
55
|
+
datadoom/engine/export/csv_exporter.py,sha256=a5hS-4TryT3nIgxIDqsXUpbz1IdTYl9COEpeR3FM9-s,1061
|
|
56
|
+
datadoom/engine/export/json_exporter.py,sha256=zhwB7Jeyz0YNAHoAQ6_L-vPWZArgApUHV3KNjizRuZI,2232
|
|
57
|
+
datadoom/engine/export/metadata.py,sha256=3gXZh0VLjyDdub-MSWFZr_oM34Ubm1JIeSiOcdRBI0Y,1714
|
|
58
|
+
datadoom/engine/export/parquet_exporter.py,sha256=r65OihY0OK8cfv5ytyX7L0y6VZp10Ws0zU0g9SoJ4Z4,1704
|
|
59
|
+
datadoom/engine/failure/__init__.py,sha256=mx_AfudZCdLD7rMtFOlI6LFS47yw48BZrbaZU51FpVg,499
|
|
60
|
+
datadoom/engine/failure/apply.py,sha256=GFLB2tNl8OxL9MLdZbc686BY3k0vbIcwihLYvxRigt0,1424
|
|
61
|
+
datadoom/engine/failure/base.py,sha256=S5ZGr8XnntAlAbgAahtxxZbMmLiaVdhFzoEFb_6n0oc,4016
|
|
62
|
+
datadoom/engine/failure/modes.py,sha256=xGNDtI_I2nD0_nxTARPnel5eNk2gfbMGWqrCZ1qjd-0,16704
|
|
63
|
+
datadoom/engine/spec/__init__.py,sha256=d_JV-0umvtKTvd6Y9N-LlA8JQatQmKp7ofrLJdiued8,1265
|
|
64
|
+
datadoom/engine/spec/hashing.py,sha256=mwaeUD12cMFHQybIMz3AxFWaBCYBV7h128HXonK00ao,1926
|
|
65
|
+
datadoom/engine/spec/models.py,sha256=ka658X3eZIJ4G_jN4iKk3LqZK2bzZXO5JQUZ31HLeQg,7654
|
|
66
|
+
datadoom/engine/spec/validate.py,sha256=VktCpaKLfqp4mW7J9YqaxTNDEe9PC7yUdS451orwwC4,14428
|
|
67
|
+
datadoom/jobs/__init__.py,sha256=_hbPl6epxusXH6yiwCCdvKXJO_JwkQLYzAwdWVckDwM,544
|
|
68
|
+
datadoom/jobs/progress.py,sha256=T0207EQUgxXE4E3bA8gCt00CYTxGvembA6kjoI33TtU,5827
|
|
69
|
+
datadoom/jobs/worker.py,sha256=QLkwJq220kh_UZJ60rWUbAbOoqcW6pQzrvnqB-nao9A,6080
|
|
70
|
+
datadoom/plugins/__init__.py,sha256=kwKqhxs4MamZP-F40PYAoytCKwqEYcdxl1CSgII6BfI,1184
|
|
71
|
+
datadoom/plugins/contracts.py,sha256=coFPXNdvCSQr-1bhRq_7_WMwafrzTcf74jDWvkM140k,2598
|
|
72
|
+
datadoom/plugins/loader.py,sha256=2ol5PgUeR270P9HcPO-PBfPRORPeIztEBLSae0DCpO0,4633
|
|
73
|
+
datadoom/plugins/registry.py,sha256=7sp4gztJW1Po20kTeXtQ1J5apQxqmObCpiHepmqXc0g,7738
|
|
74
|
+
datadoom/plugins/scaffold.py,sha256=NeQYSEyj4kdsd0w-jYnV-12wFOZwI69fzHf6omyXjgA,15152
|
|
75
|
+
datadoom/store/__init__.py,sha256=Z_2PcyJMuMzsA9NFQDHXjjtTSH0wAhBQ7RFrJ-CbfDo,1087
|
|
76
|
+
datadoom/store/artifacts.py,sha256=NoadrV7fNvbFV7ZgZrvyGEVKGycWWt_BYAEOFXy658I,2281
|
|
77
|
+
datadoom/store/db.py,sha256=FGOiJM-qiWeELbvH3KhT5PybmqEv-qD-BN1hn_a-bmM,3433
|
|
78
|
+
datadoom/store/models.py,sha256=bh-UGN4ms0jFUfqXVawpgajxYFrlJJisBR1dAmiBzR4,7820
|
|
79
|
+
datadoom/store/repositories.py,sha256=QojTltnjXoyjlXXP7-x0XjmYo-aNUp5XjfhJ1xgCU0g,9106
|
|
80
|
+
datadoom/store/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
+
datadoom/store/migrations/env.py,sha256=xlzYCVI-fQpEuJxCAk1dbsiGh2rD2upQpuLoOHEd4YA,1491
|
|
82
|
+
datadoom/store/migrations/script.py.mako,sha256=36Ym4Ks5G-JHDwyHtDLLReW9taP5HAGe7sEeFbYBhb4,504
|
|
83
|
+
datadoom/store/migrations/versions/0001_init.py,sha256=Y_z8gxKAnmR0aaa8iyQGPZ3MEnNtePsqqa0vl1KmB4g,6118
|
|
84
|
+
datadoom/store/migrations/versions/0002_report_mutual_information.py,sha256=NIh4sqMCiUP6fyRCJeRT4UA6vMOv1fZSCmo_DnXzytk,705
|
|
85
|
+
datadoom/store/migrations/versions/0003_run_name.py,sha256=XZ81ekt4PEsNI6h4BEePMDWEpyp4B3j2X1s9YSCRvBE,653
|
|
86
|
+
datadoom/store/migrations/versions/0004_report_profile.py,sha256=5OKUqchuAE2meQ5I5p61e5p1qkMoIpZfPXgnKoGUVQ0,735
|
|
87
|
+
datadoom/templates/__init__.py,sha256=DF3QXr-VVk644NZubrsbOsDyaHoZGHckvx-AVnzu4RQ,9757
|
|
88
|
+
datadoom/templates/ab_test.datadoom.yaml,sha256=CLRm6ENiKKlvZf3YzT5GEFK-cCq4KL-T1vC_5lxSUvw,1062
|
|
89
|
+
datadoom/templates/clinical_deterioration.datadoom.yaml,sha256=-jgYcHr89NP3uV5ZUVkTptGEJ5YZUMmtDcQ-_zNnEJQ,4605
|
|
90
|
+
datadoom/templates/credit_default_challenge.datadoom.yaml,sha256=nc_spU38phn1YiKpr4PoBi0zKAfFHgV3ZwXQruYGWsg,5317
|
|
91
|
+
datadoom/templates/customer_churn.datadoom.yaml,sha256=BME0IG896IrkPif4IWIDxFlMKG4rRsQlFIjgmoHLDik,1836
|
|
92
|
+
datadoom/templates/ecommerce_orders.datadoom.yaml,sha256=XyUvk8-gXpIofo_ZfcWqLfX_DkhzHAfr2zbzx3oDUdQ,1134
|
|
93
|
+
datadoom/templates/fraud_detection.datadoom.yaml,sha256=mPcmyey-2FuCqAI7qky3PIVQm3RJUC37IkcWWP4yKxM,1728
|
|
94
|
+
datadoom/templates/hospital_readmission.datadoom.yaml,sha256=WvApupKWFJO9A4FuV6ZtCbssFgWIHwYimzHVuTUVqJc,1798
|
|
95
|
+
datadoom/templates/insurance_claims.datadoom.yaml,sha256=VeJj0dz_JKehIuQFZ7phSPyvgKzCXfB27d5gvCieedA,1007
|
|
96
|
+
datadoom/templates/iot_sensors.datadoom.yaml,sha256=Tfv-mHo8Af0egcxBbT1DN6snm_0x-PpEK49dMmK42tg,1096
|
|
97
|
+
datadoom/templates/people_directory.datadoom.yaml,sha256=blBgIfqS8KnIaF6tTrLWotrrEHReLe8WB5QYLrzUpvE,1218
|
|
98
|
+
datadoom/templates/predictive_maintenance.datadoom.yaml,sha256=HSJfD1-WJ2gZHB9CO3ul4wvqKc2CW2EmoUpWTcbU64c,4275
|
|
99
|
+
datadoom/templates/telecom_churn_challenge.datadoom.yaml,sha256=MUjp06Vyglbsc1zvatXydXAxd_UBRETa1SSQTFCaTEI,4108
|
|
100
|
+
datadoom/webdist/index.html,sha256=xCzRKcA56JqGqxoI_pjbH8tuq4fcEADVZCt6so88cmU,573
|
|
101
|
+
datadoom/webdist/assets/index-V8VAuTJG.js,sha256=pkRNQZOS7QYElHPqgvVZT7OeiD59rSSU_NLxB8KUoho,586684
|
|
102
|
+
datadoom/webdist/assets/index-doRjyG5s.css,sha256=PeYQwbHdZc2RqT4wKv6ruArHzv9CLHOTGX6JxFxGp4c,45945
|
|
103
|
+
datadoom/webdist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2,sha256=yhVwYzOaxK1BjyFPOr_tEZsHmKtNN3OGzlyeWnpDXr0,25960
|
|
104
|
+
datadoom/webdist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2,sha256=cdXuk8wenx1SCjqLZkVt4Yx4edjfCdV_zS6v91_vAHU,18748
|
|
105
|
+
datadoom/webdist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2,sha256=bp4CCiX5tW1BjywIWx08CXJaTaI_5pOltGMGRgZzIZA,11232
|
|
106
|
+
datadoom/webdist/assets/inter-greek-wght-normal-CkhJZR-_.woff2,sha256=G-NEjikvvwX_4Xb-HkPxNQE9ULHn0yStGlWPYj07tvY,18996
|
|
107
|
+
datadoom/webdist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2,sha256=NLnFBMq3pz43t0Y0OkSRMuVs97VIGvLLgdx03P8lyVY,85068
|
|
108
|
+
datadoom/webdist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2,sha256=MQDndehhbNJhG-7PojpCY9cDdYZ4m0PwNSNqLm-9TGI,48256
|
|
109
|
+
datadoom/webdist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2,sha256=XGb54H6QxtSsSSLMaNYN4mwXsYWOZ3-15gP845UrP_I,10252
|
|
110
|
+
datadoom/webdist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2,sha256=0nRgTEB1f5jwffYjqLj7UZRQim-k9UE6ehB_CeO3RSo,12108
|
|
111
|
+
datadoom/webdist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2,sha256=7oYxmAd_MJP_qBwHJYHMS9YIoE5gqKnAuEY5bOTxQQk,9004
|
|
112
|
+
datadoom/webdist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2,sha256=eb_aubpGfibupBIubyVn4YjdigmoxzDVAfxIfEq5nG4,15196
|
|
113
|
+
datadoom/webdist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2,sha256=GL5FJyS_3CNsB0ypSiSaf0GoZ1LH0EqyWM6e1WUfan4,40404
|
|
114
|
+
datadoom/webdist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2,sha256=Ioh5Xaid2X5kiVS5biK0UBvYXfxFMmRGCyUviItYLKI,7504
|
|
115
|
+
datadoom/webdist/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2,sha256=lS3dtF0vlvccvzt_UQskN5r8PInqAvz4nTd7RdYsAWY,18940
|
|
116
|
+
datadoom/webdist/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2,sha256=BkCJBHb8EZirTeVx-2WN5EPE2FtmRm7AlTSoc3qxzp0,22288
|
|
117
|
+
datadoom/webdist/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2,sha256=iJXj1JglEov6UjjkyW6bQy16Pa2-XBfGCBJnOYMF3HE,6712
|
|
118
|
+
datadoom-0.1.0.dev0.dist-info/METADATA,sha256=80RqtAPxu0YcMGXkgt-R6ubBbOGlbwe0wAcqz0F9hUI,5897
|
|
119
|
+
datadoom-0.1.0.dev0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
120
|
+
datadoom-0.1.0.dev0.dist-info/entry_points.txt,sha256=MIlwtMyJXvW5ITjnd2vBMRKemnR9hgj3-SUvF1KuhHk,51
|
|
121
|
+
datadoom-0.1.0.dev0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
122
|
+
datadoom-0.1.0.dev0.dist-info/RECORD,,
|