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.
Files changed (97) hide show
  1. simcon_toolkit/__init__.py +40 -0
  2. simcon_toolkit/__main__.py +7 -0
  3. simcon_toolkit/_kit/LICENSE +202 -0
  4. simcon_toolkit/_kit/NOTICE +37 -0
  5. simcon_toolkit/_kit/assets/parts/clip_frame.stl +0 -0
  6. simcon_toolkit/_kit/assets/parts/simple_plate.stl +0 -0
  7. simcon_toolkit/_kit/packages/.ruff.toml +10 -0
  8. simcon_toolkit/_kit/packages/cadmould_cloud/__init__.py +8 -0
  9. simcon_toolkit/_kit/packages/cadmould_cloud/auth.py +681 -0
  10. simcon_toolkit/_kit/packages/cadmould_cloud/client.py +235 -0
  11. simcon_toolkit/_kit/packages/cadmould_geometry/__init__.py +5 -0
  12. simcon_toolkit/_kit/packages/cadmould_geometry/mesh.py +210 -0
  13. simcon_toolkit/_kit/packages/cadmould_geometry/stl.py +168 -0
  14. simcon_toolkit/_kit/packages/cadmould_results/__init__.py +30 -0
  15. simcon_toolkit/_kit/packages/cadmould_results/loader.py +288 -0
  16. simcon_toolkit/_kit/packages/cadmould_scoring/__init__.py +7 -0
  17. simcon_toolkit/_kit/packages/cadmould_scoring/metrics.py +519 -0
  18. simcon_toolkit/_kit/pyproject.toml +232 -0
  19. simcon_toolkit/_kit/templates/_shared/AGENTS.base.md +101 -0
  20. simcon_toolkit/_kit/templates/gate-study/.gitignore +18 -0
  21. simcon_toolkit/_kit/templates/gate-study/AGENTS.md +46 -0
  22. simcon_toolkit/_kit/templates/gate-study/GATING_STUDY_PLAYBOOK.md +219 -0
  23. simcon_toolkit/_kit/templates/gate-study/INITIAL_PROMPT.md +26 -0
  24. simcon_toolkit/_kit/templates/gate-study/README.md +137 -0
  25. simcon_toolkit/_kit/templates/gate-study/main.py +344 -0
  26. simcon_toolkit/_kit/templates/gate-study/pipeline.py +281 -0
  27. simcon_toolkit/_kit/templates/process-window/.gitignore +20 -0
  28. simcon_toolkit/_kit/templates/process-window/AGENTS.md +49 -0
  29. simcon_toolkit/_kit/templates/process-window/METHOD.md +155 -0
  30. simcon_toolkit/_kit/templates/process-window/README.md +176 -0
  31. simcon_toolkit/_kit/templates/process-window/configs/simple-plate.yaml +116 -0
  32. simcon_toolkit/_kit/templates/process-window/doe_spec.schema.md +249 -0
  33. simcon_toolkit/_kit/templates/process-window/main.py +82 -0
  34. simcon_toolkit/_kit/templates/process-window/process_window/__init__.py +5 -0
  35. simcon_toolkit/_kit/templates/process-window/process_window/centre.py +298 -0
  36. simcon_toolkit/_kit/templates/process-window/process_window/design.py +144 -0
  37. simcon_toolkit/_kit/templates/process-window/process_window/economics.py +367 -0
  38. simcon_toolkit/_kit/templates/process-window/process_window/emit.py +591 -0
  39. simcon_toolkit/_kit/templates/process-window/process_window/guardrails.py +153 -0
  40. simcon_toolkit/_kit/templates/process-window/process_window/harness.py +360 -0
  41. simcon_toolkit/_kit/templates/process-window/process_window/identity.py +92 -0
  42. simcon_toolkit/_kit/templates/process-window/process_window/inspect_part.py +184 -0
  43. simcon_toolkit/_kit/templates/process-window/process_window/kpis.py +355 -0
  44. simcon_toolkit/_kit/templates/process-window/process_window/material_card.py +163 -0
  45. simcon_toolkit/_kit/templates/process-window/process_window/probe_proxy.py +169 -0
  46. simcon_toolkit/_kit/templates/process-window/process_window/run_confirm.py +403 -0
  47. simcon_toolkit/_kit/templates/process-window/process_window/run_epsilon_floor.py +198 -0
  48. simcon_toolkit/_kit/templates/process-window/process_window/run_feedback.py +322 -0
  49. simcon_toolkit/_kit/templates/process-window/process_window/run_refine.py +279 -0
  50. simcon_toolkit/_kit/templates/process-window/process_window/run_screening.py +370 -0
  51. simcon_toolkit/_kit/templates/process-window/process_window/run_sweep.py +166 -0
  52. simcon_toolkit/_kit/templates/process-window/process_window/setup_campaign.py +312 -0
  53. simcon_toolkit/_kit/templates/process-window/process_window/surrogate.py +201 -0
  54. simcon_toolkit/_kit/templates/process-window/process_window/test_centre.py +169 -0
  55. simcon_toolkit/_kit/templates/process-window/process_window/test_design.py +113 -0
  56. simcon_toolkit/_kit/templates/process-window/process_window/test_guardrails.py +157 -0
  57. simcon_toolkit/_kit/templates/process-window/process_window/test_surrogate.py +127 -0
  58. simcon_toolkit/_kit/templates/process-window/process_window/units.py +152 -0
  59. simcon_toolkit/_kit/templates/quoting/.gitignore +24 -0
  60. simcon_toolkit/_kit/templates/quoting/AGENTS.md +58 -0
  61. simcon_toolkit/_kit/templates/quoting/INTERVIEW.md +147 -0
  62. simcon_toolkit/_kit/templates/quoting/METHOD.md +256 -0
  63. simcon_toolkit/_kit/templates/quoting/PROMPT.md +46 -0
  64. simcon_toolkit/_kit/templates/quoting/QUOTING_PLAYBOOK.md +245 -0
  65. simcon_toolkit/_kit/templates/quoting/README.md +158 -0
  66. simcon_toolkit/_kit/templates/quoting/main.py +484 -0
  67. simcon_toolkit/_kit/templates/quoting/parts/.gitkeep +0 -0
  68. simcon_toolkit/_kit/templates/quoting/quoting/__init__.py +11 -0
  69. simcon_toolkit/_kit/templates/quoting/quoting/costing.py +725 -0
  70. simcon_toolkit/_kit/templates/quoting/quoting/geometry.py +398 -0
  71. simcon_toolkit/_kit/templates/quoting/quoting/shop.py +193 -0
  72. simcon_toolkit/_kit/templates/quoting/quoting/state.py +260 -0
  73. simcon_toolkit/_kit/templates/quoting/quoting/study.py +577 -0
  74. simcon_toolkit/_kit/templates/quoting/quoting/toolkit.py +50 -0
  75. simcon_toolkit/_kit/templates/quoting/shop/README.md +43 -0
  76. simcon_toolkit/_kit/templates/quoting/shop/commercial.md +86 -0
  77. simcon_toolkit/_kit/templates/quoting/shop/lessons.md +94 -0
  78. simcon_toolkit/_kit/templates/quoting/shop/machines.md +68 -0
  79. simcon_toolkit/_kit/templates/quoting/shop/materials.md +92 -0
  80. simcon_toolkit/_kit/templates/quoting/shop/shop-profile.md +87 -0
  81. simcon_toolkit/_kit/templates/quoting/shop/tooling.md +145 -0
  82. simcon_toolkit/_kit/templates/run-one-simulation/.gitignore +16 -0
  83. simcon_toolkit/_kit/templates/run-one-simulation/AGENTS.md +41 -0
  84. simcon_toolkit/_kit/templates/run-one-simulation/README.md +133 -0
  85. simcon_toolkit/_kit/templates/run-one-simulation/main.py +216 -0
  86. simcon_toolkit/_kit/templates.toml +83 -0
  87. simcon_toolkit/choices.py +11 -0
  88. simcon_toolkit/cli.py +381 -0
  89. simcon_toolkit/generate.py +590 -0
  90. simcon_toolkit/instructions.py +152 -0
  91. simcon_toolkit/manifest.py +86 -0
  92. simcon_toolkit/project.py +356 -0
  93. simcon_toolkit/wizard.py +160 -0
  94. simcon_toolkit-0.1.0.dist-info/METADATA +48 -0
  95. simcon_toolkit-0.1.0.dist-info/RECORD +97 -0
  96. simcon_toolkit-0.1.0.dist-info/WHEEL +4 -0
  97. simcon_toolkit-0.1.0.dist-info/entry_points.txt +2 -0
@@ -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,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ simcon-toolkit = simcon_toolkit.cli:main