@@ -27,10 +27,6 @@ format:
27
27
@echo " Formatting the readme with yarn prettier"
28
28
$(MAKE ) format-readme
29
29
30
- .PHONY : test-ci
31
- test-ci :
32
- $uv run python -m pytest -m " emulated_alpha"
33
-
34
30
.PHONY : audit
35
31
audit :
36
32
uv run python -m automation.audit_snapshots
@@ -41,7 +37,13 @@ test-protocol-analysis:
41
37
42
38
.PHONY : ci-setup
43
39
ci-setup :
44
- uv sync --locked --all-extras
40
+ @echo " Setting up CI environment with editable installs..."
41
+ @if uv sync --locked --all-extras 2> /dev/null; then \
42
+ echo " Lockfile is current, using locked dependencies" ; \
43
+ else \
44
+ echo " Lockfile needs update due to editable installs, syncing without lock" ; \
45
+ uv sync --all-extras; \
46
+ fi
45
47
46
48
.PHONY : setup
47
49
setup :
@@ -134,12 +136,6 @@ CHUNK ?= chunk_0.json
134
136
analyze-chunk :
135
137
uv run python -m automation.analyze_from_chunk --chunk $(CHUNK )
136
138
137
- .PHONY : install-ot
138
- install-ot :
139
- @echo " Installing the opentrons package from the local codebase"
140
- uv pip install -e ../shared-data
141
- uv pip install -e ../api
142
-
143
139
.PHONY : create-pl-protocols
144
140
create-pl-protocols :
145
141
uv run python -m automation.data.create_pl_protocols
@@ -198,3 +194,76 @@ build-opentrons-analysis-%:
198
194
.PHONY : unit-test
199
195
unit-test :
200
196
uv run python -m pytest -m " unit" -vv
197
+
198
+ # CLI analysis targets
199
+ OUTPUT_DIR ?= analysis_results
200
+ PROTOCOLS_DIR ?= files/protocols
201
+ LABWARE_DIR ?= files/labware
202
+ TEMP_SINGLE_DIR ?= temp_single_protocol
203
+ TEMP_SAMPLE_DIR ?= temp_sample_protocols
204
+ CLI_MODULE ?= automation.protocol_analysis_cli
205
+
206
+ SINGLE_OUTPUT_SUBDIR ?= single
207
+ SAMPLE_OUTPUT_SUBDIR ?= sample
208
+ SAMPLE_PATTERN ?= *Simple*
209
+ SAMPLE_LIMIT ?= 5
210
+
211
+ .PHONY : cli-dry-run
212
+ cli-dry-run : cli-clean
213
+ @echo " Running Protocol Analysis CLI in dry-run mode"
214
+ @echo " Protocols directory: $( PROTOCOLS_DIR) "
215
+ @echo " Output directory: $( OUTPUT_DIR) "
216
+ uv run python -m $(CLI_MODULE ) \
217
+ --protocols-dir $(PROTOCOLS_DIR ) \
218
+ --output-dir $(OUTPUT_DIR ) \
219
+ --labware-dir $(LABWARE_DIR ) \
220
+ --dry-run
221
+
222
+ .PHONY : cli-analyze-single
223
+ cli-analyze-single : cli-clean
224
+ ifndef PROTOCOL
225
+ @echo "Error: PROTOCOL variable must be set"
226
+ @echo "Usage: make cli-analyze-single PROTOCOL=$(PROTOCOLS_DIR)/your_protocol.py"
227
+ @exit 1
228
+ endif
229
+ @echo "Running Protocol Analysis CLI on single protocol: $(PROTOCOL)"
230
+ @mkdir -p $(TEMP_SINGLE_DIR)
231
+ @cp $(PROTOCOL) $(TEMP_SINGLE_DIR)/
232
+ uv run python -m $(CLI_MODULE) \
233
+ --protocols-dir $(TEMP_SINGLE_DIR) \
234
+ --output-dir $(OUTPUT_DIR)/$(SINGLE_OUTPUT_SUBDIR) \
235
+ --labware-dir $(LABWARE_DIR) \
236
+ --verbose
237
+ @rm -rf $(TEMP_SINGLE_DIR)
238
+
239
+ .PHONY : cli-analyze-sample
240
+ cli-analyze-sample : cli-clean
241
+ @echo " Running Protocol Analysis CLI on a small sample of protocols"
242
+ @mkdir -p $(TEMP_SAMPLE_DIR )
243
+ @find $(PROTOCOLS_DIR ) -name " $( SAMPLE_PATTERN) " -type f \( -name " *.py" -o -name " *.json" \) | head -$(SAMPLE_LIMIT ) | xargs -I {} cp {} $(TEMP_SAMPLE_DIR ) /
244
+ @echo " Found $$ (ls $( TEMP_SAMPLE_DIR) / | wc -l) sample protocols"
245
+ uv run python -m $(CLI_MODULE ) \
246
+ --protocols-dir $(TEMP_SAMPLE_DIR ) \
247
+ --output-dir $(OUTPUT_DIR ) /$(SAMPLE_OUTPUT_SUBDIR ) \
248
+ --labware-dir $(LABWARE_DIR ) \
249
+ --verbose
250
+ @rm -rf $(TEMP_SAMPLE_DIR )
251
+
252
+ .PHONY : cli-clean
253
+ cli-clean :
254
+ @echo " Cleaning CLI analysis results"
255
+ @if [ -d " $( OUTPUT_DIR) " ]; then \
256
+ find $(OUTPUT_DIR ) -name " *.json" -delete; \
257
+ find $(OUTPUT_DIR ) -type d -empty -not -path $(OUTPUT_DIR ) -delete; \
258
+ echo " Cleaned analysis JSON files from $( OUTPUT_DIR) (keeping .keep-me files)" ; \
259
+ else \
260
+ echo " No $( OUTPUT_DIR) directory found" ; \
261
+ fi
262
+ @rm -rf $(TEMP_SAMPLE_DIR ) $(TEMP_SINGLE_DIR )
263
+ @echo " Cleaned temporary directories"
264
+
265
+ # Interactive CLI target
266
+ .PHONY : cli-interactive
267
+ cli-interactive : cli-clean
268
+ @echo " Starting interactive protocol analysis CLI..."
269
+ uv run python -m $(CLI_MODULE ) --interactive
0 commit comments