simcon-toolkit 0.1.0__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.
- simcon_toolkit/__init__.py +40 -0
- simcon_toolkit/__main__.py +7 -0
- simcon_toolkit/_kit/LICENSE +202 -0
- simcon_toolkit/_kit/NOTICE +37 -0
- simcon_toolkit/_kit/assets/parts/clip_frame.stl +0 -0
- simcon_toolkit/_kit/assets/parts/simple_plate.stl +0 -0
- simcon_toolkit/_kit/packages/.ruff.toml +10 -0
- simcon_toolkit/_kit/packages/cadmould_cloud/__init__.py +8 -0
- simcon_toolkit/_kit/packages/cadmould_cloud/auth.py +681 -0
- simcon_toolkit/_kit/packages/cadmould_cloud/client.py +235 -0
- simcon_toolkit/_kit/packages/cadmould_geometry/__init__.py +5 -0
- simcon_toolkit/_kit/packages/cadmould_geometry/mesh.py +210 -0
- simcon_toolkit/_kit/packages/cadmould_geometry/stl.py +168 -0
- simcon_toolkit/_kit/packages/cadmould_results/__init__.py +30 -0
- simcon_toolkit/_kit/packages/cadmould_results/loader.py +288 -0
- simcon_toolkit/_kit/packages/cadmould_scoring/__init__.py +7 -0
- simcon_toolkit/_kit/packages/cadmould_scoring/metrics.py +519 -0
- simcon_toolkit/_kit/pyproject.toml +232 -0
- simcon_toolkit/_kit/templates/_shared/AGENTS.base.md +101 -0
- simcon_toolkit/_kit/templates/gate-study/.gitignore +18 -0
- simcon_toolkit/_kit/templates/gate-study/AGENTS.md +46 -0
- simcon_toolkit/_kit/templates/gate-study/GATING_STUDY_PLAYBOOK.md +219 -0
- simcon_toolkit/_kit/templates/gate-study/INITIAL_PROMPT.md +26 -0
- simcon_toolkit/_kit/templates/gate-study/README.md +137 -0
- simcon_toolkit/_kit/templates/gate-study/main.py +344 -0
- simcon_toolkit/_kit/templates/gate-study/pipeline.py +281 -0
- simcon_toolkit/_kit/templates/process-window/.gitignore +20 -0
- simcon_toolkit/_kit/templates/process-window/AGENTS.md +49 -0
- simcon_toolkit/_kit/templates/process-window/METHOD.md +155 -0
- simcon_toolkit/_kit/templates/process-window/README.md +176 -0
- simcon_toolkit/_kit/templates/process-window/configs/simple-plate.yaml +116 -0
- simcon_toolkit/_kit/templates/process-window/doe_spec.schema.md +249 -0
- simcon_toolkit/_kit/templates/process-window/main.py +82 -0
- simcon_toolkit/_kit/templates/process-window/process_window/__init__.py +5 -0
- simcon_toolkit/_kit/templates/process-window/process_window/centre.py +298 -0
- simcon_toolkit/_kit/templates/process-window/process_window/design.py +144 -0
- simcon_toolkit/_kit/templates/process-window/process_window/economics.py +367 -0
- simcon_toolkit/_kit/templates/process-window/process_window/emit.py +591 -0
- simcon_toolkit/_kit/templates/process-window/process_window/guardrails.py +153 -0
- simcon_toolkit/_kit/templates/process-window/process_window/harness.py +360 -0
- simcon_toolkit/_kit/templates/process-window/process_window/identity.py +92 -0
- simcon_toolkit/_kit/templates/process-window/process_window/inspect_part.py +184 -0
- simcon_toolkit/_kit/templates/process-window/process_window/kpis.py +355 -0
- simcon_toolkit/_kit/templates/process-window/process_window/material_card.py +163 -0
- simcon_toolkit/_kit/templates/process-window/process_window/probe_proxy.py +169 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_confirm.py +403 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_epsilon_floor.py +198 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_feedback.py +322 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_refine.py +279 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_screening.py +370 -0
- simcon_toolkit/_kit/templates/process-window/process_window/run_sweep.py +166 -0
- simcon_toolkit/_kit/templates/process-window/process_window/setup_campaign.py +312 -0
- simcon_toolkit/_kit/templates/process-window/process_window/surrogate.py +201 -0
- simcon_toolkit/_kit/templates/process-window/process_window/test_centre.py +169 -0
- simcon_toolkit/_kit/templates/process-window/process_window/test_design.py +113 -0
- simcon_toolkit/_kit/templates/process-window/process_window/test_guardrails.py +157 -0
- simcon_toolkit/_kit/templates/process-window/process_window/test_surrogate.py +127 -0
- simcon_toolkit/_kit/templates/process-window/process_window/units.py +152 -0
- simcon_toolkit/_kit/templates/quoting/.gitignore +24 -0
- simcon_toolkit/_kit/templates/quoting/AGENTS.md +58 -0
- simcon_toolkit/_kit/templates/quoting/INTERVIEW.md +147 -0
- simcon_toolkit/_kit/templates/quoting/METHOD.md +256 -0
- simcon_toolkit/_kit/templates/quoting/PROMPT.md +46 -0
- simcon_toolkit/_kit/templates/quoting/QUOTING_PLAYBOOK.md +245 -0
- simcon_toolkit/_kit/templates/quoting/README.md +158 -0
- simcon_toolkit/_kit/templates/quoting/main.py +484 -0
- simcon_toolkit/_kit/templates/quoting/parts/.gitkeep +0 -0
- simcon_toolkit/_kit/templates/quoting/quoting/__init__.py +11 -0
- simcon_toolkit/_kit/templates/quoting/quoting/costing.py +725 -0
- simcon_toolkit/_kit/templates/quoting/quoting/geometry.py +398 -0
- simcon_toolkit/_kit/templates/quoting/quoting/shop.py +193 -0
- simcon_toolkit/_kit/templates/quoting/quoting/state.py +260 -0
- simcon_toolkit/_kit/templates/quoting/quoting/study.py +577 -0
- simcon_toolkit/_kit/templates/quoting/quoting/toolkit.py +50 -0
- simcon_toolkit/_kit/templates/quoting/shop/README.md +43 -0
- simcon_toolkit/_kit/templates/quoting/shop/commercial.md +86 -0
- simcon_toolkit/_kit/templates/quoting/shop/lessons.md +94 -0
- simcon_toolkit/_kit/templates/quoting/shop/machines.md +68 -0
- simcon_toolkit/_kit/templates/quoting/shop/materials.md +92 -0
- simcon_toolkit/_kit/templates/quoting/shop/shop-profile.md +87 -0
- simcon_toolkit/_kit/templates/quoting/shop/tooling.md +145 -0
- simcon_toolkit/_kit/templates/run-one-simulation/.gitignore +16 -0
- simcon_toolkit/_kit/templates/run-one-simulation/AGENTS.md +41 -0
- simcon_toolkit/_kit/templates/run-one-simulation/README.md +133 -0
- simcon_toolkit/_kit/templates/run-one-simulation/main.py +216 -0
- simcon_toolkit/_kit/templates.toml +83 -0
- simcon_toolkit/choices.py +11 -0
- simcon_toolkit/cli.py +381 -0
- simcon_toolkit/generate.py +590 -0
- simcon_toolkit/instructions.py +152 -0
- simcon_toolkit/manifest.py +86 -0
- simcon_toolkit/project.py +356 -0
- simcon_toolkit/wizard.py +160 -0
- simcon_toolkit-0.1.0.dist-info/METADATA +48 -0
- simcon_toolkit-0.1.0.dist-info/RECORD +97 -0
- simcon_toolkit-0.1.0.dist-info/WHEEL +4 -0
- simcon_toolkit-0.1.0.dist-info/entry_points.txt +2 -0
simcon_toolkit/wizard.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"""The three questions, asked only when a person is at a terminal and the template is missing.
|
|
2
|
+
|
|
3
|
+
questionary is imported inside `ask`, never at module scope. Every scripted run and every
|
|
4
|
+
assistant takes the flag path, and prompt_toolkit underneath costs roughly ten times what
|
|
5
|
+
the rest of the installer does to import, so a run that asks nothing must not load it.
|
|
6
|
+
|
|
7
|
+
This module never decides WHETHER to ask; `cli.is_interactive` does. Every prompt library
|
|
8
|
+
measured, questionary included, blocks forever on an open stdin nobody writes to, so the
|
|
9
|
+
decision has to be made before any of them is reached.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import TYPE_CHECKING
|
|
15
|
+
|
|
16
|
+
from simcon_toolkit.choices import DEFAULT_PACKAGE_MANAGER, PACKAGE_MANAGERS
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from simcon_toolkit.manifest import TemplateSpec
|
|
20
|
+
|
|
21
|
+
#: The prompts' own text, which the terminal tests wait on.
|
|
22
|
+
TEMPLATE_QUESTION = "Which template?"
|
|
23
|
+
NAME_QUESTION = "Project folder name"
|
|
24
|
+
PACKAGE_MANAGER_QUESTION = "Which package manager?"
|
|
25
|
+
|
|
26
|
+
PACKAGE_MANAGER_NOTES = {
|
|
27
|
+
"uv": "recommended; installs Python for you",
|
|
28
|
+
"pip": "the installer that ships with Python",
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class Cancelled(Exception):
|
|
33
|
+
"""The person pressed Ctrl-C or closed the input before the last answer."""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _glyphs(encoding: str | None) -> tuple[str, str]:
|
|
37
|
+
"""The question mark and the pointer, plain when the terminal cannot show better.
|
|
38
|
+
|
|
39
|
+
prompt_toolkit replaces what it cannot encode rather than crashing, so this is about a
|
|
40
|
+
readable screen on an ASCII locale, not about survival.
|
|
41
|
+
"""
|
|
42
|
+
try:
|
|
43
|
+
"◆›".encode(encoding or "ascii")
|
|
44
|
+
except (UnicodeEncodeError, LookupError):
|
|
45
|
+
return "?", ">"
|
|
46
|
+
return "◆", "›"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def name_problem(text: str, *, force: bool) -> str | None:
|
|
50
|
+
"""Why a typed folder name cannot be used, or None. Asked again rather than failing late.
|
|
51
|
+
|
|
52
|
+
Not every refusal can be foreseen here — a clash with one file of the customer's is found
|
|
53
|
+
only by assembling the project — but the common ones are, and each is cheaper to fix at
|
|
54
|
+
the prompt than after the last question.
|
|
55
|
+
"""
|
|
56
|
+
import os
|
|
57
|
+
from pathlib import Path
|
|
58
|
+
|
|
59
|
+
from simcon_toolkit.generate import STAMP, GeneratorError, check_new_path, check_project_name, distribution_name
|
|
60
|
+
|
|
61
|
+
if text.startswith("~"):
|
|
62
|
+
return "A leading ~ is not expanded here. Give the path in full, or a plain folder name."
|
|
63
|
+
path = Path(text)
|
|
64
|
+
try:
|
|
65
|
+
check_new_path(path)
|
|
66
|
+
# From the absolute path, as the generator derives it: `Path(".").name` is empty.
|
|
67
|
+
check_project_name(distribution_name(Path(os.path.abspath(path)).name))
|
|
68
|
+
if path.exists() and not path.is_dir():
|
|
69
|
+
return f"{text} is a file, not a folder. Choose another name."
|
|
70
|
+
if (path / STAMP).is_file() and not force:
|
|
71
|
+
return f"{text} already holds a project. Choose another name, or rerun with --force."
|
|
72
|
+
except GeneratorError as problem:
|
|
73
|
+
return str(problem)
|
|
74
|
+
# A name the filesystem cannot even look up, such as one past its length limit. Raised
|
|
75
|
+
# inside a prompt it would be swallowed there and leave the prompt looping.
|
|
76
|
+
# The name is not repeated: a prompt shows its error on one line cut at the terminal's
|
|
77
|
+
# width, and a name long enough to fail this way would push the reason off the screen.
|
|
78
|
+
except OSError as problem:
|
|
79
|
+
return f"That name cannot be used here: {problem.strerror or problem}."
|
|
80
|
+
return None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def ask(
|
|
84
|
+
templates: dict[str, TemplateSpec],
|
|
85
|
+
*,
|
|
86
|
+
default_template: str,
|
|
87
|
+
name: str | None,
|
|
88
|
+
package_manager: str | None,
|
|
89
|
+
force: bool = False,
|
|
90
|
+
) -> tuple[str, str, str]:
|
|
91
|
+
"""Ask whatever the flags left open and return (template, name, package manager).
|
|
92
|
+
|
|
93
|
+
A question a flag already answered is not asked: the flag suppresses exactly its own
|
|
94
|
+
prompt. The template is always asked, because this is only reached when it is missing.
|
|
95
|
+
"""
|
|
96
|
+
import sys
|
|
97
|
+
|
|
98
|
+
import questionary
|
|
99
|
+
from prompt_toolkit.styles import Style
|
|
100
|
+
|
|
101
|
+
mark, pointer = _glyphs(getattr(sys.stdout, "encoding", None))
|
|
102
|
+
style = Style.from_dict(
|
|
103
|
+
{
|
|
104
|
+
"qmark": "fg:ansicyan bold",
|
|
105
|
+
"question": "bold",
|
|
106
|
+
"pointer": "fg:ansicyan bold",
|
|
107
|
+
"highlighted": "fg:ansicyan bold",
|
|
108
|
+
"answer": "fg:ansicyan",
|
|
109
|
+
"instruction": "fg:ansibrightblack",
|
|
110
|
+
"description": "fg:ansibrightblack",
|
|
111
|
+
"placeholder": "fg:ansibrightblack",
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
common = {"qmark": mark, "style": style}
|
|
115
|
+
width = max(len(template) for template in templates)
|
|
116
|
+
try:
|
|
117
|
+
template = questionary.select(
|
|
118
|
+
TEMPLATE_QUESTION,
|
|
119
|
+
choices=[
|
|
120
|
+
questionary.Choice(f"{spec.name:<{width}} {spec.title}", value=spec.name, description=spec.description)
|
|
121
|
+
# The manifest's own order, which leads with the simplest template, rather than
|
|
122
|
+
# the alphabet, which would bury it last.
|
|
123
|
+
for spec in templates.values()
|
|
124
|
+
],
|
|
125
|
+
default=default_template,
|
|
126
|
+
pointer=pointer,
|
|
127
|
+
instruction="(arrow keys, Enter to choose)",
|
|
128
|
+
**common,
|
|
129
|
+
).unsafe_ask()
|
|
130
|
+
|
|
131
|
+
if name is None:
|
|
132
|
+
# The default as a greyed placeholder, not pre-filled text: typing then replaces
|
|
133
|
+
# it, as in create-vite, instead of appending to it, and Enter on nothing takes it.
|
|
134
|
+
typed = questionary.text(
|
|
135
|
+
NAME_QUESTION,
|
|
136
|
+
placeholder=template,
|
|
137
|
+
validate=lambda text: name_problem(text or template, force=force) or True,
|
|
138
|
+
**common,
|
|
139
|
+
).unsafe_ask()
|
|
140
|
+
# Not stripped: the name used must be exactly the one the validator passed.
|
|
141
|
+
name = typed or template
|
|
142
|
+
|
|
143
|
+
if package_manager is None:
|
|
144
|
+
package_manager = questionary.select(
|
|
145
|
+
PACKAGE_MANAGER_QUESTION,
|
|
146
|
+
# The note as a description, not in the title: the title is what the answered
|
|
147
|
+
# line repeats, and it should read `uv`, not the sales pitch.
|
|
148
|
+
choices=[
|
|
149
|
+
questionary.Choice(manager, value=manager, description=PACKAGE_MANAGER_NOTES[manager])
|
|
150
|
+
for manager in PACKAGE_MANAGERS
|
|
151
|
+
],
|
|
152
|
+
default=DEFAULT_PACKAGE_MANAGER,
|
|
153
|
+
pointer=pointer,
|
|
154
|
+
**common,
|
|
155
|
+
).unsafe_ask()
|
|
156
|
+
# OSError is the terminal going away mid-question (EIO on a closed pty). Nothing has been
|
|
157
|
+
# written yet, so it is a cancellation too, not a traceback.
|
|
158
|
+
except (KeyboardInterrupt, EOFError, OSError) as stopped:
|
|
159
|
+
raise Cancelled from stopped
|
|
160
|
+
return template, name, package_manager
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: simcon-toolkit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Put a working Cadmould example project on your machine.
|
|
5
|
+
Author: SIMCON kunststofftechnische Software GmbH
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Keywords: cadmould,injection-molding,scaffolding,simcon,simulation
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Topic :: Scientific/Engineering
|
|
11
|
+
Requires-Python: >=3.12
|
|
12
|
+
Requires-Dist: prompt-toolkit>=3.0.10
|
|
13
|
+
Requires-Dist: questionary>=2.1
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# simcon-toolkit
|
|
17
|
+
|
|
18
|
+
Put a working SIMCON example project on your machine: a workflow you run, read and change,
|
|
19
|
+
with instruction files your own AI coding assistant already knows how to find.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uvx simcon-toolkit@latest init
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
It asks three questions: which template, what to call the folder, and whether you install
|
|
26
|
+
with uv or pip. Press Enter through all three for the defaults. Or answer them up front and
|
|
27
|
+
nothing is asked — only the template is required:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
uvx simcon-toolkit@latest init my-study --template gate-study --package-manager uv
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`@latest` is not decoration: without it uvx reuses whichever version it cached first.
|
|
34
|
+
|
|
35
|
+
See the templates, one line each:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uvx simcon-toolkit@latest init --list
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Run it in a folder that already has files and it adds the project beside them. If a file it
|
|
42
|
+
would write already exists with different content, it stops and names the file before
|
|
43
|
+
changing anything; `--force` overwrites exactly those files and nothing else.
|
|
44
|
+
|
|
45
|
+
The installer needs no account. The project it writes does: it declares the licensed
|
|
46
|
+
`cadmould` SDK, and running it takes three browser sign-ins — one to install the SDK from
|
|
47
|
+
SIMCON's private index, one for your Cadmould licence, and one for the cloud. The project's
|
|
48
|
+
README walks through each, for the installer you chose.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
simcon_toolkit/__init__.py,sha256=iJFs_c0T1W47Fn5kFF27ipg7mbTsc-m03mIrfhIlvKE,1661
|
|
2
|
+
simcon_toolkit/__main__.py,sha256=L8_O7RXG9xFmbsggqDADHheWbHBKnJluyCnogFJv4Mg,182
|
|
3
|
+
simcon_toolkit/choices.py,sha256=qhVw71D0r5HJqV_z8oLfpesMCaBcudWAyfplwXGJX_I,442
|
|
4
|
+
simcon_toolkit/cli.py,sha256=Nl9AOzvu-fb9jfBcIAgpF2AzfGP35hYK2z-css-Nu2c,17153
|
|
5
|
+
simcon_toolkit/generate.py,sha256=_-WQBkanRWGr6e0jpinNaKBHrOJfzaPuhS6g2bR_Ypc,26830
|
|
6
|
+
simcon_toolkit/instructions.py,sha256=cX7LqoxqtEwN7kwVHyPB2tyRXckz1YmYMwH-2io437A,7346
|
|
7
|
+
simcon_toolkit/manifest.py,sha256=I6CBGhT7UzMOC2enJqhtBYHNeCV5YGQdUpAt2YWQc7o,3013
|
|
8
|
+
simcon_toolkit/project.py,sha256=E0lb11ER3Z3V33QSnuuTGc7-svWwbuDbFR5L2tVqghA,16678
|
|
9
|
+
simcon_toolkit/wizard.py,sha256=Ns0xwso192QY0DYftCpu4Lin3OJyK851PbNCy4DR87U,6698
|
|
10
|
+
simcon_toolkit/_kit/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
11
|
+
simcon_toolkit/_kit/NOTICE,sha256=38Saq_Xw-QtN64hvRWDmxMA1zmWMTPIcLxpMBTV09UM,2069
|
|
12
|
+
simcon_toolkit/_kit/assets/parts/clip_frame.stl,sha256=ZVuJX9K10VMa0bs43rWbDxRTlz9xQSJ18nnERJCeIA4,621384
|
|
13
|
+
simcon_toolkit/_kit/assets/parts/simple_plate.stl,sha256=ZvVQ_o54uetl3_2t0HqqR1ojiXx_6oxAzOeq479i5M4,217684
|
|
14
|
+
simcon_toolkit/_kit/packages/.ruff.toml,sha256=i0PorB4sRbKxTjrqK-updLDiQktt_01MlAjC5wm4q0M,484
|
|
15
|
+
simcon_toolkit/_kit/packages/cadmould_cloud/__init__.py,sha256=kf-WlW0_NN275FD2ej0rQZs6ZC3re3H8LKDEcmAKqN0,345
|
|
16
|
+
simcon_toolkit/_kit/packages/cadmould_cloud/auth.py,sha256=OIvFrZOZuQaO417OmYulxuiGA_sv0N3MkPi-sK8F5kA,25739
|
|
17
|
+
simcon_toolkit/_kit/packages/cadmould_cloud/client.py,sha256=P-FZTzjmM293hDxQ0Nm_4OscvuoGRnGGVVMkIOwSfVw,11112
|
|
18
|
+
simcon_toolkit/_kit/packages/cadmould_geometry/__init__.py,sha256=F9gBchlLsRaSp8C3RTzsPc-p92Fm72VlDXXtT8LPHBs,198
|
|
19
|
+
simcon_toolkit/_kit/packages/cadmould_geometry/mesh.py,sha256=6rmGE2PIgPxnz_maWnXVsyNqrXnaWNBeG_s7jqMiF9o,7919
|
|
20
|
+
simcon_toolkit/_kit/packages/cadmould_geometry/stl.py,sha256=Z2WFpje0EyeMBoN1vsd10WMg8PXChKkA19mTN4ztncQ,7295
|
|
21
|
+
simcon_toolkit/_kit/packages/cadmould_results/__init__.py,sha256=w0kQoEYMqYecCUKCQ4OrYKV1tpGtHc2Prj1G6KakjDQ,597
|
|
22
|
+
simcon_toolkit/_kit/packages/cadmould_results/loader.py,sha256=fcVqcyVaxF1TpHzJBpfd-1CcYtgDKKdMKW1O6_suF6I,12236
|
|
23
|
+
simcon_toolkit/_kit/packages/cadmould_scoring/__init__.py,sha256=ctN4ldmEIWazUMTVB-XaPMS2bhkB0akPUKKLL27bcZ0,275
|
|
24
|
+
simcon_toolkit/_kit/packages/cadmould_scoring/metrics.py,sha256=Kd3KcHVaiVW9afdzCdhGSc3XynAQd0GeVNWr2RcFvd0,19529
|
|
25
|
+
simcon_toolkit/_kit/pyproject.toml,sha256=lPnCph051i5ET_ssfDETd6RDPvApDTifWeAilH_KdVE,10282
|
|
26
|
+
simcon_toolkit/_kit/templates/_shared/AGENTS.base.md,sha256=N1BiEVqID0n_kTUvtDky1KdXRfrObc1wOZnecSL4Dmo,4902
|
|
27
|
+
simcon_toolkit/_kit/templates/gate-study/.gitignore,sha256=e0pMnuO2rI-mNybqqSiCpVctvVW5zgsiZbJRDnnIrkM,518
|
|
28
|
+
simcon_toolkit/_kit/templates/gate-study/AGENTS.md,sha256=vND2StK-C122sEjGj2HSpaCBsyH5oTHDoAJa7hdkiX8,2176
|
|
29
|
+
simcon_toolkit/_kit/templates/gate-study/GATING_STUDY_PLAYBOOK.md,sha256=vpcaX16Khp6TtYjYg6yLHBZJlCLUxv7a_7Ay5316GdI,12851
|
|
30
|
+
simcon_toolkit/_kit/templates/gate-study/INITIAL_PROMPT.md,sha256=4PsDLGG4VJreWLgdNXeML4lQlRNzwYdv15hrxGIjkUY,1571
|
|
31
|
+
simcon_toolkit/_kit/templates/gate-study/README.md,sha256=33c0ioDBJU7OOHq25VpcDgRKe-0sSD31qxjd2JBLSKE,6739
|
|
32
|
+
simcon_toolkit/_kit/templates/gate-study/main.py,sha256=LW5CoB-BR7vFUXflad3EX5UmnYZTbcUkxOL6wgJlc_Y,13197
|
|
33
|
+
simcon_toolkit/_kit/templates/gate-study/pipeline.py,sha256=qD-50NP6K3NeaBQ3x8SELatMojVcFWT1Gb4fHLKAfIE,10658
|
|
34
|
+
simcon_toolkit/_kit/templates/process-window/.gitignore,sha256=ljeBKqWSZ7G_ymla3nYo9JhUsSyYdDAVFsWn1gEaXyE,501
|
|
35
|
+
simcon_toolkit/_kit/templates/process-window/AGENTS.md,sha256=mv_Yqj6px3lS5LotJ89RGNYVU0KsLclCB3jCOq4-Lv4,2384
|
|
36
|
+
simcon_toolkit/_kit/templates/process-window/METHOD.md,sha256=0oX4VOE-Rt_nTaOJg1p1FZ52e9MTYKT-yFoB_CEsqSM,8152
|
|
37
|
+
simcon_toolkit/_kit/templates/process-window/README.md,sha256=shV6gjTeOpthABMT1yjSms7VQjqd9TUa2reuZLl_rt0,8665
|
|
38
|
+
simcon_toolkit/_kit/templates/process-window/doe_spec.schema.md,sha256=kaYdBdMlFMAl5Mfyfbw1WbWZZxo62T0-wy0Xa733dzc,11228
|
|
39
|
+
simcon_toolkit/_kit/templates/process-window/main.py,sha256=DOi34w9VkjMdnX0MsaMwF5ljXtsdXTYK83S8VCgImWA,3602
|
|
40
|
+
simcon_toolkit/_kit/templates/process-window/configs/simple-plate.yaml,sha256=VkRGlRd4JniP63MXfNLRsKnzUO_WuYtCabjf-EUraEQ,4708
|
|
41
|
+
simcon_toolkit/_kit/templates/process-window/process_window/__init__.py,sha256=Iwrm0yluz1gApZHv4tuD6Bm6475iZoz4u2mweT11oio,250
|
|
42
|
+
simcon_toolkit/_kit/templates/process-window/process_window/centre.py,sha256=wPDrBMtu6itL3eMEXUAcTkfDhMh5eZ6HBjuXGGggzEU,12196
|
|
43
|
+
simcon_toolkit/_kit/templates/process-window/process_window/design.py,sha256=rGJxbMvN_CLe0iXw-3GjJyspka8T4bdRRv8anFndW1Q,6422
|
|
44
|
+
simcon_toolkit/_kit/templates/process-window/process_window/economics.py,sha256=Zn3eCg3HKaQTtTf0TuUg9uR5RYZsImyzsmE-eRSMGuQ,17162
|
|
45
|
+
simcon_toolkit/_kit/templates/process-window/process_window/emit.py,sha256=wZGLtBxvNF1LscRZt2jl_gYifz34M0R-zQsg1314xK4,24352
|
|
46
|
+
simcon_toolkit/_kit/templates/process-window/process_window/guardrails.py,sha256=WpuiiiirTkoAy7RlPDbP-REbRUcAkpD2LDLF28NJ71k,7470
|
|
47
|
+
simcon_toolkit/_kit/templates/process-window/process_window/harness.py,sha256=59qq0-LIV3_wmurj89dUDLe9o36fXe5r_6Y_SvIFS_4,14321
|
|
48
|
+
simcon_toolkit/_kit/templates/process-window/process_window/identity.py,sha256=zQSFR4Rr2G0JzERXW2TxpgCzkMaS-gX77o0jJJw67vA,4068
|
|
49
|
+
simcon_toolkit/_kit/templates/process-window/process_window/inspect_part.py,sha256=slCX9QQqNKk3c1exTvwL6YGty93CBkRvqrjdfeA5wxo,7444
|
|
50
|
+
simcon_toolkit/_kit/templates/process-window/process_window/kpis.py,sha256=R8ivUr9hO6ptZl2-IlETXddJy5ylHmiHHD4CvA7lRQc,16850
|
|
51
|
+
simcon_toolkit/_kit/templates/process-window/process_window/material_card.py,sha256=FkkfRn-uu8Ceacn_ubzBL3UV4CWDlsO2rtGQbtV4x7g,6299
|
|
52
|
+
simcon_toolkit/_kit/templates/process-window/process_window/probe_proxy.py,sha256=eoPBYSEYZcy9bpUpxosW4xtMc4gu-hFppiSZ3VNnfBg,6744
|
|
53
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_confirm.py,sha256=KtVHyV1gYpYt-g10I7kBOVAxdbhyNJz1ZNyXkrCCfT4,17768
|
|
54
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_epsilon_floor.py,sha256=mMd3x-VqVQfVelDZ59q7BBIN8KqtebFQ2DUC8n4Fv-I,7692
|
|
55
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_feedback.py,sha256=8ii4xlRfW7kbPV0rzbWh2ZUPyqMADcmeD2l42z-THUs,13893
|
|
56
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_refine.py,sha256=9Ju3mVTE5NQ-8UBHa2eQAP54huQuNLjhVisORvO0ryQ,12222
|
|
57
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_screening.py,sha256=C_E0CEQxnTfSWoFUjUQfP3VabFQLSyCoIYraIqVD5ok,17825
|
|
58
|
+
simcon_toolkit/_kit/templates/process-window/process_window/run_sweep.py,sha256=B5azJMfoRAK5cr127qUMaKQqnfyB7rshDgVcBQKJ5lU,6740
|
|
59
|
+
simcon_toolkit/_kit/templates/process-window/process_window/setup_campaign.py,sha256=vL-8K8NsGV-RBKrrdKcq-hIaVqTUjdYnCDCTPyKKBM8,12585
|
|
60
|
+
simcon_toolkit/_kit/templates/process-window/process_window/surrogate.py,sha256=RRP6RTUJ7dYvV2goLETeFkvWGSxM94VlFnyalQCsxGg,8234
|
|
61
|
+
simcon_toolkit/_kit/templates/process-window/process_window/test_centre.py,sha256=TaaTu9oMbEWV1pp8IuS2TBFcdrHUklCKWXcW3PmACWs,7527
|
|
62
|
+
simcon_toolkit/_kit/templates/process-window/process_window/test_design.py,sha256=phYldwswIZ-nOFbLrBQNue8IptVEkLRdQBz83JJDOtQ,4515
|
|
63
|
+
simcon_toolkit/_kit/templates/process-window/process_window/test_guardrails.py,sha256=DcH4p7H0B6Ix4E6-PvOXCby4gWO2IwSg-wa7mI0VkBQ,5063
|
|
64
|
+
simcon_toolkit/_kit/templates/process-window/process_window/test_surrogate.py,sha256=PSVPKLuUBcMcqQhOQDVXwIqCy0l0yjgEThKGqh21gyI,5108
|
|
65
|
+
simcon_toolkit/_kit/templates/process-window/process_window/units.py,sha256=UyxEzTqdSiYiVRzF9cmF4oAT5rlr_ptkH6RFtCMNmWE,6112
|
|
66
|
+
simcon_toolkit/_kit/templates/quoting/.gitignore,sha256=fMc52MTHsGZWWB6DF87RzLqtjorPGCAn9Faio8l0K0I,832
|
|
67
|
+
simcon_toolkit/_kit/templates/quoting/AGENTS.md,sha256=hvxcipwnwccqhrR8QGvT2lIMZGhi_XTBstyJPfLgFvk,3009
|
|
68
|
+
simcon_toolkit/_kit/templates/quoting/INTERVIEW.md,sha256=qOuYhmsGsKLQbJmv09z1eEzx4ocCUDwC-PDGFvAxSY8,7207
|
|
69
|
+
simcon_toolkit/_kit/templates/quoting/METHOD.md,sha256=-A-tpza4De5lAwutMLZAmEzbQ9xHXXHUVZYblrjV5Is,14490
|
|
70
|
+
simcon_toolkit/_kit/templates/quoting/PROMPT.md,sha256=QuteItdHhWYqb14OzWx5N76bDZUa2Gtb7hlLYN9vvh4,2267
|
|
71
|
+
simcon_toolkit/_kit/templates/quoting/QUOTING_PLAYBOOK.md,sha256=ybB0BjH8qZpM1TNKdIOUlxSPskneYhCsdrC9gWaBpQg,13434
|
|
72
|
+
simcon_toolkit/_kit/templates/quoting/README.md,sha256=-xbPzZOHtpsEFkR2sjHamFKiPHni6t_oXHf5_onat78,8442
|
|
73
|
+
simcon_toolkit/_kit/templates/quoting/main.py,sha256=OZIgiAkB2C-cM0ugy2DuWlCJ2ZXgWmZKO1kwkJqzCes,21388
|
|
74
|
+
simcon_toolkit/_kit/templates/quoting/parts/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
+
simcon_toolkit/_kit/templates/quoting/quoting/__init__.py,sha256=UEeo8gg4QeN2rYnSXpd2uEPcLSSaV1AaNn6ED4u3W_g,517
|
|
76
|
+
simcon_toolkit/_kit/templates/quoting/quoting/costing.py,sha256=2jmh1pehxRN59k68mMpbcfA-cfatoGdeOunkd-OM1A0,30125
|
|
77
|
+
simcon_toolkit/_kit/templates/quoting/quoting/geometry.py,sha256=q5Jmb9V7Fi23v0myAe2LNigLN4Es11xBasgC_yv616g,18020
|
|
78
|
+
simcon_toolkit/_kit/templates/quoting/quoting/shop.py,sha256=orrjM1P9mvXMZG44QZMOu7xaKPypZgsGMc7K4lPXgt0,7279
|
|
79
|
+
simcon_toolkit/_kit/templates/quoting/quoting/state.py,sha256=-7bNFkymggtaIAzw6seUbZLzJ7-nxhZwgY4R1cGjflQ,11290
|
|
80
|
+
simcon_toolkit/_kit/templates/quoting/quoting/study.py,sha256=YHsfWeNxsR5dNF86pXEaOI0bu_PyQUOQf8h4lupkWwE,27381
|
|
81
|
+
simcon_toolkit/_kit/templates/quoting/quoting/toolkit.py,sha256=63PJuitisNlnGKF-KyZDBspBXGm675v8Aqzz2TYfJA4,1683
|
|
82
|
+
simcon_toolkit/_kit/templates/quoting/shop/README.md,sha256=v0m936wxpLptJqtaoF878ORyHspbnyuWD7tzvtrk8Rc,2244
|
|
83
|
+
simcon_toolkit/_kit/templates/quoting/shop/commercial.md,sha256=h7ptx8Qds0nQiD2uvekrd3ZDdWRBmGCxcYDB0Q8u47I,3700
|
|
84
|
+
simcon_toolkit/_kit/templates/quoting/shop/lessons.md,sha256=BxGY_I7fpt72O4ieY4-nhjAUR_JkOie9hJEL6lj-3iE,4156
|
|
85
|
+
simcon_toolkit/_kit/templates/quoting/shop/machines.md,sha256=ziIR1Fabduny8t20_rFPnt4ZHDyjrx3bzQqW3WNQjSE,4017
|
|
86
|
+
simcon_toolkit/_kit/templates/quoting/shop/materials.md,sha256=-f8V3OPAvXYDV0P26iG6PMx0SYGMo722_RnE4sc0qCw,5888
|
|
87
|
+
simcon_toolkit/_kit/templates/quoting/shop/shop-profile.md,sha256=MRLLvPymFIv2HVKzRH5WG17LXGvC-VvOJjSKfYIiu80,4321
|
|
88
|
+
simcon_toolkit/_kit/templates/quoting/shop/tooling.md,sha256=b8L2ziY6W2_tusd-E2h6PJ5qCSGDIrRB5w6jE5PkdM0,5748
|
|
89
|
+
simcon_toolkit/_kit/templates/run-one-simulation/.gitignore,sha256=VireGz-Dpcd-ESPjP3nbdY4MaFXkGvQ-LyHTUixG79g,404
|
|
90
|
+
simcon_toolkit/_kit/templates/run-one-simulation/AGENTS.md,sha256=7iMQjfjxruI77PatE-wWQfVdxFICqbvdv-ryYAhqiT0,1812
|
|
91
|
+
simcon_toolkit/_kit/templates/run-one-simulation/README.md,sha256=c2OR0jWd8Ra5DSAWvRohNS8QeNxdHqN4epiKkcTAAlc,5939
|
|
92
|
+
simcon_toolkit/_kit/templates/run-one-simulation/main.py,sha256=Eex5l_eWfwXZxxrl8RhvttFJ_8RsuyYyj8nAsoJYWuM,9687
|
|
93
|
+
simcon_toolkit/_kit/templates.toml,sha256=OPyfLIWCXHPF5yy2UmKmk9reWWJAOQ0VgknsN-3WIRI,4136
|
|
94
|
+
simcon_toolkit-0.1.0.dist-info/METADATA,sha256=hiyZfDzYHMva_CrrCnBbh265a6_gDFEKD-U34XBQq3A,1861
|
|
95
|
+
simcon_toolkit-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
96
|
+
simcon_toolkit-0.1.0.dist-info/entry_points.txt,sha256=zypR97OeBNGcJoA3ZEjh16R2H05hoQLN_m82sWbokng,59
|
|
97
|
+
simcon_toolkit-0.1.0.dist-info/RECORD,,
|