classiq 0.54.0__py3-none-any.whl → 0.56.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.
- classiq/interface/_version.py +1 -1
- classiq/interface/debug_info/debug_info.py +11 -0
- classiq/interface/executor/result.py +0 -3
- classiq/interface/generator/functions/builtins/internal_operators.py +9 -1
- classiq/interface/generator/generated_circuit_data.py +0 -1
- classiq/interface/generator/model/preferences/preferences.py +4 -0
- classiq/interface/generator/types/compilation_metadata.py +5 -0
- classiq/interface/generator/visitor.py +13 -1
- classiq/interface/ide/visual_model.py +5 -1
- classiq/interface/interface_version.py +1 -1
- classiq/interface/model/control.py +22 -1
- classiq/interface/model/handle_binding.py +28 -0
- classiq/interface/model/model.py +4 -0
- classiq/interface/model/native_function_definition.py +1 -1
- classiq/interface/model/quantum_expressions/arithmetic_operation.py +2 -26
- classiq/interface/model/quantum_statement.py +6 -0
- classiq/model_expansions/capturing/mangling_utils.py +22 -0
- classiq/model_expansions/capturing/propagated_var_stack.py +36 -25
- classiq/model_expansions/closure.py +77 -12
- classiq/model_expansions/function_builder.py +9 -10
- classiq/model_expansions/generative_functions.py +2 -2
- classiq/model_expansions/interpreter.py +29 -26
- classiq/model_expansions/quantum_operations/control.py +114 -29
- classiq/model_expansions/quantum_operations/emitter.py +37 -11
- classiq/model_expansions/quantum_operations/expression_operation.py +80 -18
- classiq/model_expansions/quantum_operations/power.py +5 -0
- classiq/model_expansions/quantum_operations/quantum_assignment_operation.py +7 -37
- classiq/model_expansions/quantum_operations/quantum_function_call.py +2 -32
- classiq/model_expansions/quantum_operations/repeat.py +5 -0
- classiq/model_expansions/quantum_operations/within_apply.py +0 -16
- classiq/model_expansions/scope_initialization.py +2 -3
- classiq/qmod/builtins/functions/arithmetic.py +0 -2
- classiq/qmod/builtins/functions/discrete_sine_cosine_transform.py +0 -12
- classiq/qmod/builtins/functions/exponentiation.py +0 -6
- classiq/qmod/builtins/functions/grover.py +0 -17
- classiq/qmod/builtins/functions/linear_pauli_rotation.py +0 -5
- classiq/qmod/builtins/functions/modular_exponentiation.py +0 -3
- classiq/qmod/builtins/functions/qaoa_penalty.py +0 -8
- classiq/qmod/builtins/functions/qft_functions.py +0 -3
- classiq/qmod/builtins/functions/qpe.py +0 -6
- classiq/qmod/builtins/functions/qsvt.py +0 -12
- classiq/qmod/builtins/functions/standard_gates.py +0 -88
- classiq/qmod/builtins/functions/state_preparation.py +7 -15
- classiq/qmod/builtins/functions/swap_test.py +0 -3
- classiq/qmod/builtins/operations.py +152 -17
- classiq/qmod/create_model_function.py +10 -12
- classiq/qmod/model_state_container.py +5 -1
- classiq/qmod/native/pretty_printer.py +6 -1
- classiq/qmod/pretty_print/pretty_printer.py +25 -11
- classiq/qmod/qmod_constant.py +31 -3
- classiq/qmod/quantum_function.py +25 -19
- classiq/qmod/synthesize_separately.py +1 -2
- {classiq-0.54.0.dist-info → classiq-0.56.0.dist-info}/METADATA +2 -3
- {classiq-0.54.0.dist-info → classiq-0.56.0.dist-info}/RECORD +55 -55
- classiq/model_expansions/call_to_model_converter.py +0 -190
- {classiq-0.54.0.dist-info → classiq-0.56.0.dist-info}/WHEEL +0 -0
@@ -95,7 +95,7 @@ classiq/execution/qaoa.py,sha256=IiicS_L41FeR_9kDcqLKnbuBuWj5ABuuGKqyC6SVsHk,300
|
|
95
95
|
classiq/execution/qnn.py,sha256=6lAKO0TpSEkcY_EwbJfVqNeqCeOegmkBQC1AzUrWxy0,2333
|
96
96
|
classiq/executor.py,sha256=TbGAu6p70kNWMWvq3d9YldAd6LZqBJ2xl915vg8rM2Y,2602
|
97
97
|
classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
|
98
|
-
classiq/interface/_version.py,sha256=
|
98
|
+
classiq/interface/_version.py,sha256=cKtHL5MqnHCnyLSUhs4AIJCaYZOJegX3Ak5U8Dpc7cI,197
|
99
99
|
classiq/interface/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
100
|
classiq/interface/analyzer/analysis_params.py,sha256=dM5rwSks798cxk4FWe4_X5ToRYtgZQh34F1u0XrFkK8,3881
|
101
101
|
classiq/interface/analyzer/cytoscape_graph.py,sha256=MpeRBIYS1TfwYwiFpgTO51IE0KoxhY510pmEM3S0rbw,2361
|
@@ -141,7 +141,7 @@ classiq/interface/combinatorial_optimization/result.py,sha256=kDGShpwzhp8KOibngo
|
|
141
141
|
classiq/interface/combinatorial_optimization/sense.py,sha256=P8_kJRf3aUKbCkIqOP3tOc81Vpz9yW4Z74RGaYbd9TA,262
|
142
142
|
classiq/interface/combinatorial_optimization/solver_types.py,sha256=kcLt80fQucq_DWmJXmmVljwCGV4gtDnqOMlJdemhPQc,135
|
143
143
|
classiq/interface/debug_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
144
|
-
classiq/interface/debug_info/debug_info.py,sha256=
|
144
|
+
classiq/interface/debug_info/debug_info.py,sha256=ivqEJKO-DZVDl9yNl_WM57l3V8qDb-FnvcAyMLGoC3w,3243
|
145
145
|
classiq/interface/enum_utils.py,sha256=QxkxLGgON8vdSzLZzHFlPEBJoGOqoIwpESEfLfRqN0w,312
|
146
146
|
classiq/interface/exceptions.py,sha256=j_FisYmjHhnW0GnYshCSC6TLvkFMdwNzbLRetA15ZhI,4375
|
147
147
|
classiq/interface/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -162,7 +162,7 @@ classiq/interface/executor/optimizer_preferences.py,sha256=iw-UJ_8WhziqB2s8cmQ1j
|
|
162
162
|
classiq/interface/executor/quantum_code.py,sha256=jA-4hIw5nydv7TcDZ4xPI0YP-FiSa_52SieyYjJkVHI,4258
|
163
163
|
classiq/interface/executor/quantum_instruction_set.py,sha256=_2owh6shcNSKlCHCXbAO6UzzZqldTu3YmUqUw9Qefvo,565
|
164
164
|
classiq/interface/executor/register_initialization.py,sha256=-dkivVSDkkLGkIdu0L5VaONhPCRp_JE42LiAZuHUK7k,1365
|
165
|
-
classiq/interface/executor/result.py,sha256=
|
165
|
+
classiq/interface/executor/result.py,sha256=Qh5fbkVrONmFivA_U5yqsIpwNAMOzhwMTD-EXf8wpIU,12185
|
166
166
|
classiq/interface/executor/vqe_result.py,sha256=cH66jBbZVhyU5Ud4WeoC1eKeX15aO60phEXWFrilc4E,2324
|
167
167
|
classiq/interface/finance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
168
168
|
classiq/interface/finance/finance_modelling_params.py,sha256=dmJscMXugQsBRoFd4HFtrTU8gsuZJ6sS51R4crC-PKE,347
|
@@ -242,7 +242,7 @@ classiq/interface/generator/function_param_list_without_self_reference.py,sha256
|
|
242
242
|
classiq/interface/generator/function_params.py,sha256=qo0JrN5nbNmh3nB2WUMftMS-c4o-oCh6KnljLBe7bLg,9677
|
243
243
|
classiq/interface/generator/functions/__init__.py,sha256=HXHq8Fw2zHG3AYuRXrDEQdJ-CEFX7ibsNCp8czuCmmM,73
|
244
244
|
classiq/interface/generator/functions/builtins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
|
-
classiq/interface/generator/functions/builtins/internal_operators.py,sha256=
|
245
|
+
classiq/interface/generator/functions/builtins/internal_operators.py,sha256=BjTxQiNCJfaITrnk69HFTjCDpwIGXwUAb9TP6KR8WD0,417
|
246
246
|
classiq/interface/generator/functions/classical_function_declaration.py,sha256=zgZj1Zbvu7Hsz6qaPQOyJnExFcbeCrRczalfD1wzfOs,1275
|
247
247
|
classiq/interface/generator/functions/classical_type.py,sha256=XC33c4Zl9ZweiGGUPUh4BeUa1GgapvBOHeEsLJ4cS58,4180
|
248
248
|
classiq/interface/generator/functions/concrete_types.py,sha256=odTCFSdBXx2vjRxGcJd7oj2JShlicAdgdWLTl2uErr8,1333
|
@@ -250,7 +250,7 @@ classiq/interface/generator/functions/function_declaration.py,sha256=G0kjoaQeW_O
|
|
250
250
|
classiq/interface/generator/functions/port_declaration.py,sha256=ESJE_19jOg_zS1reFN5dq0xgobZ6J3C3DsIs6EME1c4,1100
|
251
251
|
classiq/interface/generator/functions/qmod_python_interface.py,sha256=x8GA4Cr6YyfC6prGXv0A0I9G9GSnLHNito2nfN1GZDI,93
|
252
252
|
classiq/interface/generator/functions/type_name.py,sha256=7qM4O_6pQTmaBopIxLMMwaOcbFdzjepXj2KS9rOrJ74,2611
|
253
|
-
classiq/interface/generator/generated_circuit_data.py,sha256=
|
253
|
+
classiq/interface/generator/generated_circuit_data.py,sha256=5AtQw3wESi_tzQMpKAYy3P92c6yFs7DhjiudOfxiWH8,6509
|
254
254
|
classiq/interface/generator/grover_diffuser.py,sha256=c52p2_hpjBO0qUDsqFMQ_xffBIDPJlrfz3kIy2Mh2Gk,3750
|
255
255
|
classiq/interface/generator/grover_operator.py,sha256=_VzBJ3qO0O0MJzsHf8LF7_ooXnsz1p_I5rjQQFf1Ptg,4119
|
256
256
|
classiq/interface/generator/hadamard_transform.py,sha256=NI4oZBpDCGfaw2OTb5SL3iSGI_nDtyUgElTCO4pEKnk,673
|
@@ -273,7 +273,7 @@ classiq/interface/generator/model/__init__.py,sha256=sLQXMrkAbpmNwrfcCGdSTMNrlBN
|
|
273
273
|
classiq/interface/generator/model/constraints.py,sha256=8LM-2NT8jARIzehBLmR2Z1hHwpQT-TwezWvnt82tTBE,2575
|
274
274
|
classiq/interface/generator/model/model.py,sha256=VoAHk_wnL0GHd9BV2yjqGQR_fyDaCp5vlZOe7QJXtaE,2466
|
275
275
|
classiq/interface/generator/model/preferences/__init__.py,sha256=KTNkU8hK3cpqzXvw_C1maxhBRTm1H53WUen1jJwZ0fQ,256
|
276
|
-
classiq/interface/generator/model/preferences/preferences.py,sha256=
|
276
|
+
classiq/interface/generator/model/preferences/preferences.py,sha256=gV0RWDsi92yCDR6i105X_sKWYZW8Guw3gtTT9KgeWfo,11136
|
277
277
|
classiq/interface/generator/model/preferences/randomness.py,sha256=nAI8Fu9NQ0uJxuwIQCUDspJKMCQVHBbvPNqCTtrBEos,248
|
278
278
|
classiq/interface/generator/model/quantum_register.py,sha256=5YeeO2LEaEQW9pIKU7Wmdd74qOgcPbLLu1HuYZA7nxw,8026
|
279
279
|
classiq/interface/generator/noise_properties.py,sha256=onvXd_FeBznwu1AcOpAkL7-fo9Dc6tPcAIiL5Qxs2Ok,425
|
@@ -321,6 +321,7 @@ classiq/interface/generator/synthesis_metadata/synthesis_execution_data.py,sha25
|
|
321
321
|
classiq/interface/generator/transpiler_basis_gates.py,sha256=4MHl6uI3Fa8bl1w_kGQC_2y_CQGxnKXbWSp5ezaw-w0,2397
|
322
322
|
classiq/interface/generator/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
323
323
|
classiq/interface/generator/types/builtin_enum_declarations.py,sha256=_FW45QH1LgXfXP83ZNhc74-BZTzjwARngTlA6YKATlk,2315
|
324
|
+
classiq/interface/generator/types/compilation_metadata.py,sha256=2LJUeGWxuW3Yu_PYvN1Vk9MBDfNDd-blApP-iDst574,140
|
324
325
|
classiq/interface/generator/types/enum_declaration.py,sha256=NLSkIANe33qubSDGmxROhNFZNuIDcJjRA-ZRuKhiZ5g,1712
|
325
326
|
classiq/interface/generator/types/qstruct_declaration.py,sha256=Qw6cHW_elZmrs4UO0z7lgS7TWb0hEUEJ5Ur-Ko0bCR4,485
|
326
327
|
classiq/interface/generator/types/struct_declaration.py,sha256=2qKVV-pdqeUGiwKh2-5W2Ci4z0aQG4TG91MuQ82fa_A,959
|
@@ -330,7 +331,7 @@ classiq/interface/generator/user_defined_function_params.py,sha256=ohB6cQWtwJysN
|
|
330
331
|
classiq/interface/generator/validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
331
332
|
classiq/interface/generator/validations/flow_graph.py,sha256=ceOodlLaDTgI8kpgLSosfGSawNowN6vB2AnYh6Wu4Vo,6203
|
332
333
|
classiq/interface/generator/validations/validator_functions.py,sha256=ODvbPavjxx2skGdNdgT5d9ZsZjsp9XkHBUPK7oZBElY,1418
|
333
|
-
classiq/interface/generator/visitor.py,sha256=
|
334
|
+
classiq/interface/generator/visitor.py,sha256=eboTkNpi5xfrp95diXlEfQk4PQxGxwy_js4BnzxQVRU,3321
|
334
335
|
classiq/interface/grover/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
336
|
classiq/interface/grover/grover_modelling_params.py,sha256=eMXdjfuGlVq5qD3QyG-C8mAyIBAoxzkjF052M4b1i-k,390
|
336
337
|
classiq/interface/hardware.py,sha256=sIlzJb99jPjg1NdRVvrKgOBCHhAamXcyT1uM5DRONV4,2406
|
@@ -346,31 +347,31 @@ classiq/interface/helpers/validation_helpers.py,sha256=Jt0xs5EZeEQZOBEZPRmKctHmA
|
|
346
347
|
classiq/interface/helpers/versioned_model.py,sha256=kBgEghNdSidohb0-p_EjRFZLs7LAmLZ_uKIHZFSZ8cQ,159
|
347
348
|
classiq/interface/ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
348
349
|
classiq/interface/ide/ide_data.py,sha256=TtFsBttR7L34DeRx4NaswpdyMqEyAuguEWSvGXfZtZs,2504
|
349
|
-
classiq/interface/ide/visual_model.py,sha256=
|
350
|
-
classiq/interface/interface_version.py,sha256=
|
350
|
+
classiq/interface/ide/visual_model.py,sha256=DRMRY8rAD32qYYetUG6e102VUlTzk8Xcc_U9oNy8U0Y,3225
|
351
|
+
classiq/interface/interface_version.py,sha256=2IEn9rPs263hKneZPcjLWS4F5XgLirAx13R81C7J2Hs,24
|
351
352
|
classiq/interface/jobs.py,sha256=i8hrBR2qtptCbxNI-PVYZedH_EDehOe2i09JbJUlD1g,2339
|
352
353
|
classiq/interface/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
353
354
|
classiq/interface/model/bind_operation.py,sha256=J0E6u8KOSB-vRcdpsukYpk1oc8efRohyX-PwLKh98Dc,1869
|
354
355
|
classiq/interface/model/classical_if.py,sha256=Qr726EEiim47PexMd8lTRfHLziUoiTUitnHrM3-oSgI,432
|
355
356
|
classiq/interface/model/classical_parameter_declaration.py,sha256=tcAw-knjFqeHg_snv7qBJuJDrUhmL0v1-Q_YfVgRnEc,1261
|
356
|
-
classiq/interface/model/control.py,sha256=
|
357
|
-
classiq/interface/model/handle_binding.py,sha256=
|
357
|
+
classiq/interface/model/control.py,sha256=1q_CjIGSGmqmvfT1RAN6VmIj2DZIio2wMOCT6HNniBw,1356
|
358
|
+
classiq/interface/model/handle_binding.py,sha256=0uJADrIA429Jn05Bg0ZkLB594tl8sjvjPAzvkYl-320,8504
|
358
359
|
classiq/interface/model/inplace_binary_operation.py,sha256=Q2CmF42Y975SOJ7gsZfGyRA5Jn9MKzyNle0sopCyCh4,1494
|
359
360
|
classiq/interface/model/invert.py,sha256=9gN0vmy4892_ItwPxKc0lTjjagyKUX6mEer2vINdL5o,294
|
360
|
-
classiq/interface/model/model.py,sha256=
|
361
|
-
classiq/interface/model/native_function_definition.py,sha256=
|
361
|
+
classiq/interface/model/model.py,sha256=aQJEZIi8DO-zeLTQ5M_h7y5iGujoXxzSaUPz8FqKru4,6834
|
362
|
+
classiq/interface/model/native_function_definition.py,sha256=BPB_JfwPL6ftKlf9ceGdYOT27Fw87VbvTMDVrXJZPVI,1016
|
362
363
|
classiq/interface/model/parameter.py,sha256=otI4w5Oc4EPAALfZxDf-QxBlMSXP_CtKaUa7STMdaiw,333
|
363
364
|
classiq/interface/model/phase_operation.py,sha256=sZh00h1wOkZLiwdv_-vqJRtYJxZzmsNqCjGm2z3aXRQ,323
|
364
365
|
classiq/interface/model/port_declaration.py,sha256=wN2t9s2vUcUe4iKKHhSov14ndjkl3eJyM3aE08Kf8os,1650
|
365
366
|
classiq/interface/model/power.py,sha256=3C2NOkq_t8AafvYsN51hmgMIJB0pic_DvZxYbID9WX4,388
|
366
367
|
classiq/interface/model/quantum_expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
367
368
|
classiq/interface/model/quantum_expressions/amplitude_loading_operation.py,sha256=9vo9duieNmLwGoUn6Ey4C0YSqYymbt3Tb6eo80qATIs,2449
|
368
|
-
classiq/interface/model/quantum_expressions/arithmetic_operation.py,sha256=
|
369
|
+
classiq/interface/model/quantum_expressions/arithmetic_operation.py,sha256=kqABvyr-niat293lHqBmPhV0Ks3WUgHJ3mevmyD1zD8,2732
|
369
370
|
classiq/interface/model/quantum_expressions/quantum_expression.py,sha256=f_QrCf130IsVs_Nswwmr0_XYOJzvyx4hY8rWxE5lOA4,2133
|
370
371
|
classiq/interface/model/quantum_function_call.py,sha256=Rhx0-6gxKt2r3UXupoF8H9_zqkGKQdSqf1sI3xgyb84,7150
|
371
372
|
classiq/interface/model/quantum_function_declaration.py,sha256=GhUDg_cuF1ehcyfWAsXeOzLsPlp5RS_Uf8ejiO3pLmg,8118
|
372
373
|
classiq/interface/model/quantum_lambda_function.py,sha256=McokIgBUEJIPlsQvnXWQnlXH_4qTh2g5QY5K-_WDlcQ,1685
|
373
|
-
classiq/interface/model/quantum_statement.py,sha256=
|
374
|
+
classiq/interface/model/quantum_statement.py,sha256=_IxBMYOdS9eGLevMLBkj5vk0uOzSw3PRYml1GQH0Pwg,2828
|
374
375
|
classiq/interface/model/quantum_type.py,sha256=xQzwcgegZVwDuHOfPTVbSv3MZKPu6xBq7ZcDhS2EAZU,8296
|
375
376
|
classiq/interface/model/quantum_variable_declaration.py,sha256=Vmx-aHnss8E_ghqX_wi4Njp-dEtYK-WwYHtHAwmGZxk,229
|
376
377
|
classiq/interface/model/repeat.py,sha256=pSq0rzSDUVQqyzlv-mV1k-Jx57KyjqjZ1KgScGFOQgE,408
|
@@ -389,12 +390,11 @@ classiq/interface/server/routes.py,sha256=UqQ3BrPbGKMn3BdTo836fTVnOBI99KSPUIBwa0
|
|
389
390
|
classiq/interface/source_reference.py,sha256=a-4Vdc511ux-0lDPDTRGAzouRWWtu4A3MPAfiZe_YPE,1764
|
390
391
|
classiq/model_expansions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
391
392
|
classiq/model_expansions/atomic_expression_functions_defs.py,sha256=-P19ErGfCylg_V8mnAh_zFA4h88_FWPHXLGQaFHCvJ0,8443
|
392
|
-
classiq/model_expansions/call_to_model_converter.py,sha256=BAufH_tbLgyYxvq7nrZH1hlIHNSjPQMvVX2EVviFarQ,7160
|
393
393
|
classiq/model_expansions/capturing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
394
394
|
classiq/model_expansions/capturing/captured_var_manager.py,sha256=t-3EM-MfNlSGhx9-wzdwNAUM0aaEqDSboMBSe48QpVo,1790
|
395
|
-
classiq/model_expansions/capturing/mangling_utils.py,sha256=
|
396
|
-
classiq/model_expansions/capturing/propagated_var_stack.py,sha256=
|
397
|
-
classiq/model_expansions/closure.py,sha256=
|
395
|
+
classiq/model_expansions/capturing/mangling_utils.py,sha256=oXefnIECq-8yeW6FujI0UxgIJRKfPTjhIdfizHK3I2I,1350
|
396
|
+
classiq/model_expansions/capturing/propagated_var_stack.py,sha256=h6STPdNYa-kpoPYSgnjZ0SPYm2uyTanieY626pbr538,7414
|
397
|
+
classiq/model_expansions/closure.py,sha256=2Votl4jGNOYvW73Ob6bdRitgp-_gGRvtySse1vpFW7s,8308
|
398
398
|
classiq/model_expansions/debug_flag.py,sha256=JWzl9FFq2CLcvTg_sh-K8Dp_xXvewsTuFKhPjTCrsrs,107
|
399
399
|
classiq/model_expansions/evaluators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
400
400
|
classiq/model_expansions/evaluators/arg_type_match.py,sha256=ovN41FwUYr0-t_PbTrtUnzqO3ZKw9y7_VBZmZFRN8aM,6135
|
@@ -406,27 +406,27 @@ classiq/model_expansions/evaluators/quantum_type_utils.py,sha256=qKsntBUV_HYGsys
|
|
406
406
|
classiq/model_expansions/evaluators/type_type_match.py,sha256=3akZR86TAFKUyM5c5knCPSlraI3LQeWZXxXMTtmu0BI,3220
|
407
407
|
classiq/model_expansions/expression_evaluator.py,sha256=viOhH1X3gLAn77FkXzJ4BUHOg2i28LsNOmcpvM_R9-0,4338
|
408
408
|
classiq/model_expansions/expression_renamer.py,sha256=rtAf-vvJhlwh-KCs2WgxdW4lP3UjA0vUtZeHcIoTwUM,2692
|
409
|
-
classiq/model_expansions/function_builder.py,sha256=
|
410
|
-
classiq/model_expansions/generative_functions.py,sha256=
|
411
|
-
classiq/model_expansions/interpreter.py,sha256=
|
409
|
+
classiq/model_expansions/function_builder.py,sha256=GF0w1Ap1h2OsyuODOOwcWaDM4Zmu4GGM2YPC2_RuzHY,6925
|
410
|
+
classiq/model_expansions/generative_functions.py,sha256=bw3KbNCrq72H-jSDZx9npdxha0Po8lV4cqSjneW2Xlo,8465
|
411
|
+
classiq/model_expansions/interpreter.py,sha256=eKtaF47ty5RfzsfM26h3Epu62SqbKvpICrG36_AAYL0,15490
|
412
412
|
classiq/model_expansions/model_tables.py,sha256=C0ZhCF1GAmgCqkm6iTNO9-cj_YdwGpE8etKvVxWx1w8,3585
|
413
413
|
classiq/model_expansions/quantum_operations/__init__.py,sha256=BMruLYFsir2nU9Du9PZBcQzQsgIc-4Zpkx8CJmvbL14,1040
|
414
414
|
classiq/model_expansions/quantum_operations/bind.py,sha256=QsrNMtDXHFcG2TWO7wbk4yml7kpPys1YCmL-bNrrZ_I,2606
|
415
415
|
classiq/model_expansions/quantum_operations/classicalif.py,sha256=gbRbGXtM5ep1HPGps4OSZQ07Rjgyehzgx3hsbx2ZK9Y,2160
|
416
|
-
classiq/model_expansions/quantum_operations/control.py,sha256=
|
417
|
-
classiq/model_expansions/quantum_operations/emitter.py,sha256=
|
418
|
-
classiq/model_expansions/quantum_operations/expression_operation.py,sha256=
|
416
|
+
classiq/model_expansions/quantum_operations/control.py,sha256=39dFHH2bySdl9A9HNLlE7XtCimVRYoxjsLvDMQss3Ww,13416
|
417
|
+
classiq/model_expansions/quantum_operations/emitter.py,sha256=bCLX3Q2TFbZQy1DlUoplJ178kFScCFHC7NFdZdQ5STw,13035
|
418
|
+
classiq/model_expansions/quantum_operations/expression_operation.py,sha256=S4LMvKdmOakjXkAxedSYIgWc3No5dTMIHodpQ_NaaQ4,10420
|
419
419
|
classiq/model_expansions/quantum_operations/inplace_binary_operation.py,sha256=RHSNil7KGaWJWDVWYX5_bTU8RTuyp2KDN5c2asPzKdA,17036
|
420
420
|
classiq/model_expansions/quantum_operations/invert.py,sha256=2lGBaGR6XuMPkMXSx9_LlVI_Y--XYaEDyofCYUgin14,1667
|
421
421
|
classiq/model_expansions/quantum_operations/phase.py,sha256=LUk33JP9o7V-TaAhSeZci0LhNiP3EY0_PxWxVqjkQLE,7227
|
422
|
-
classiq/model_expansions/quantum_operations/power.py,sha256=
|
423
|
-
classiq/model_expansions/quantum_operations/quantum_assignment_operation.py,sha256=
|
424
|
-
classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=
|
425
|
-
classiq/model_expansions/quantum_operations/repeat.py,sha256=
|
422
|
+
classiq/model_expansions/quantum_operations/power.py,sha256=ysFIKzEB5nc3NUusJv_z6V1QKDXIjfEnZs2-6rF5EVc,2920
|
423
|
+
classiq/model_expansions/quantum_operations/quantum_assignment_operation.py,sha256=bvWXSuT56lBLftc4SnacZyZPMRDm3d4jxC0RnatTHQA,9477
|
424
|
+
classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=HVU92szD_SzmtB3XJ2hY66iZazUaw5XT6o0Byw-jlNs,993
|
425
|
+
classiq/model_expansions/quantum_operations/repeat.py,sha256=_ukxgNnQXbaMoJImhIVFaXswi01Z2x1y-ArxH_JS080,2241
|
426
426
|
classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=DdlkwMbVknd_rvZXaXelF0p1YDy6cYHStAzLJVbnV9w,1208
|
427
|
-
classiq/model_expansions/quantum_operations/within_apply.py,sha256=
|
427
|
+
classiq/model_expansions/quantum_operations/within_apply.py,sha256=dehZPxM-z2x_pdjKplml293viBtrhXNtJDEm99TbEqY,1746
|
428
428
|
classiq/model_expansions/scope.py,sha256=kcqvA-aL8HnyzR6hT-ptxt01lQAT7z_rLXHzxh99AQk,7624
|
429
|
-
classiq/model_expansions/scope_initialization.py,sha256=
|
429
|
+
classiq/model_expansions/scope_initialization.py,sha256=hgIK2Qx1uPT_nP4fUzDdFWZAiemDT_yw-S8oKdy01WE,5678
|
430
430
|
classiq/model_expansions/sympy_conversion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
431
431
|
classiq/model_expansions/sympy_conversion/arithmetics.py,sha256=7ZKg1C92wUdxtFhrT4VuI9mNvH2a1z1R8lbWYFhYczc,1116
|
432
432
|
classiq/model_expansions/sympy_conversion/expression_to_sympy.py,sha256=JvjhM68m6OinhJ0fR0gSUn3RqoEniD7vLAL0FO4C6R0,5634
|
@@ -445,51 +445,51 @@ classiq/qmod/builtins/constants.py,sha256=FURSVt0dlIAw_xkGMyj89z4eub7vUdvUrPzaLT
|
|
445
445
|
classiq/qmod/builtins/enums.py,sha256=JzfANJT4Z1Gy8io4JjCnez4t97mxBjT1K-ij2Cli9kQ,3417
|
446
446
|
classiq/qmod/builtins/functions/__init__.py,sha256=11hP94xe4ZZLlusTGPuYtK5ASUgVLVWm9fqYBPqRhFM,5962
|
447
447
|
classiq/qmod/builtins/functions/amplitude_estimation.py,sha256=uYMF_Ehde2ajpO-sxlBG8_V1BqPSEmUTvhAR2Qs9_0o,1783
|
448
|
-
classiq/qmod/builtins/functions/arithmetic.py,sha256=
|
448
|
+
classiq/qmod/builtins/functions/arithmetic.py,sha256=tL16nE-7-V4R3-9OFPGw_JH8pXTZygohJTmcUqDdaGQ,2369
|
449
449
|
classiq/qmod/builtins/functions/benchmarking.py,sha256=TYY1VRd5DHl-mKTKeW5wF1txZgFsb3yPXM_rdgoLWCo,250
|
450
450
|
classiq/qmod/builtins/functions/chemistry.py,sha256=Wl8ktlY0U_M-mDXozcCht44_flZtwImIiGeAMr7hs4s,2126
|
451
|
-
classiq/qmod/builtins/functions/discrete_sine_cosine_transform.py,sha256=
|
452
|
-
classiq/qmod/builtins/functions/exponentiation.py,sha256=
|
451
|
+
classiq/qmod/builtins/functions/discrete_sine_cosine_transform.py,sha256=lVqqXMNgNGlZ_ueOQ8Esrtuju6Sj8J1SOYQ7TDEsHeM,4641
|
452
|
+
classiq/qmod/builtins/functions/exponentiation.py,sha256=FFd-yM37Bk36BchjbflC6l_1n4YPFxHv_lSyLR5hsn4,4095
|
453
453
|
classiq/qmod/builtins/functions/finance.py,sha256=zo-UZ_R_8UMw0FCLJQsw_CEMAKV4derY00tnbAPC2yw,861
|
454
|
-
classiq/qmod/builtins/functions/grover.py,sha256=
|
454
|
+
classiq/qmod/builtins/functions/grover.py,sha256=tfrTUG7ePmwPaUpNLnWU9wYwlpo3Eag5eDNNeXEZbIs,4653
|
455
455
|
classiq/qmod/builtins/functions/hea.py,sha256=3w3lCEFG4VFpsIq3e-DzdfxsVcy7AgTcv3OJiMTMHcU,4999
|
456
|
-
classiq/qmod/builtins/functions/linear_pauli_rotation.py,sha256=
|
457
|
-
classiq/qmod/builtins/functions/modular_exponentiation.py,sha256=
|
456
|
+
classiq/qmod/builtins/functions/linear_pauli_rotation.py,sha256=nPe4nZXnWo1RF7HOFGvlY1-b1x5AwfC0C_JLeTy5g3E,2682
|
457
|
+
classiq/qmod/builtins/functions/modular_exponentiation.py,sha256=Sd7JztF-gG0LaOXlMvxd4LMgYuM_lCKetQwdC6yq2XU,6766
|
458
458
|
classiq/qmod/builtins/functions/operators.py,sha256=rA4fhvuxa9dICjBmEItRWc0dcI9zYCQXtpxNaw8AdL0,411
|
459
|
-
classiq/qmod/builtins/functions/qaoa_penalty.py,sha256=
|
460
|
-
classiq/qmod/builtins/functions/qft_functions.py,sha256=
|
461
|
-
classiq/qmod/builtins/functions/qpe.py,sha256=
|
459
|
+
classiq/qmod/builtins/functions/qaoa_penalty.py,sha256=rivWwKZlmCoGdii9PYztOx6SBnYpRhca-qPYTw4bDT8,4045
|
460
|
+
classiq/qmod/builtins/functions/qft_functions.py,sha256=Bf9BhyfS2Q7i0bZis8vyoZTLm1two2XYdgsCYFeGQlU,1472
|
461
|
+
classiq/qmod/builtins/functions/qpe.py,sha256=SnV95exHzLLjxqtMhYawQPumWFvhlQab9jU0T7SB3qs,2294
|
462
462
|
classiq/qmod/builtins/functions/qsvm.py,sha256=j5UbMWfl2UNtBewjSWgXq-fvHuAznpINw_b5-_XEKdU,586
|
463
|
-
classiq/qmod/builtins/functions/qsvt.py,sha256=
|
464
|
-
classiq/qmod/builtins/functions/standard_gates.py,sha256=
|
465
|
-
classiq/qmod/builtins/functions/state_preparation.py,sha256=
|
466
|
-
classiq/qmod/builtins/functions/swap_test.py,sha256=
|
463
|
+
classiq/qmod/builtins/functions/qsvt.py,sha256=bqqS7DKpXWGVPAS7OzT9hBSUE1YT53-TdB9LB6LfOBE,7224
|
464
|
+
classiq/qmod/builtins/functions/standard_gates.py,sha256=CRhNH7cUtRqGOknpfjT_v8B2wx00sOxgRXfayI3AMWc,15679
|
465
|
+
classiq/qmod/builtins/functions/state_preparation.py,sha256=RQXlXiR_zX6pMr_-gcV1p-NAL62E7Xj9MlZl8pAinh0,16781
|
466
|
+
classiq/qmod/builtins/functions/swap_test.py,sha256=Yvwb4nXxFs0qQng5xyVjvgG__5cPrUtwjNKdLC6UaVU,1127
|
467
467
|
classiq/qmod/builtins/functions/utility_functions.py,sha256=lkxTPhI4jenoBWYJePPF-pMDBNBmUT9KdEVS3QrmSjw,1180
|
468
468
|
classiq/qmod/builtins/functions/variational.py,sha256=LtMZnaJY9xYsBtFnr-Wn5i5kNaL0gHW8QaBnbEzuMQY,1806
|
469
|
-
classiq/qmod/builtins/operations.py,sha256=
|
469
|
+
classiq/qmod/builtins/operations.py,sha256=qkqVDDnoBrzPV8KtB67c5hiJqFGIKYFBV-QPpJjRDgk,15628
|
470
470
|
classiq/qmod/builtins/structs.py,sha256=pdjNKFAhxLNzVdz4bhONO4PwvfI_W7Z7Skjgqt47mxw,2913
|
471
471
|
classiq/qmod/cfunc.py,sha256=e3zWNEloBBPy-wJaGI1K5cdNFbd3oq0o4TUY2YDr6ks,1087
|
472
472
|
classiq/qmod/classical_function.py,sha256=iHm6T719PUZQPwuNSkouaMA8J9yHrrHUpP-2AQjsA5g,1088
|
473
473
|
classiq/qmod/cparam.py,sha256=wai8PyfS6QCJ8_WLck2nRZrtuEXYg1cogj4CQ_EZKP4,1182
|
474
|
-
classiq/qmod/create_model_function.py,sha256=
|
474
|
+
classiq/qmod/create_model_function.py,sha256=Srmt954JHsl2QR5vRmFsMbAjCDL4vlpY0Ta804nRU4g,7778
|
475
475
|
classiq/qmod/declaration_inferrer.py,sha256=Z6TKHz-3ZoNAmIlxX5muxvAb7UyhihWx-s4a1yGK18w,6995
|
476
476
|
classiq/qmod/expression_query.py,sha256=24gsE5hJ1o9ZuqPILH7aaoOzKRQY2RZtvIK35xuubGA,1629
|
477
477
|
classiq/qmod/generative.py,sha256=3hFrDhAu-WZovuK28f7abVS4lSX7i5aK2GEvrkEqOv4,1588
|
478
|
-
classiq/qmod/model_state_container.py,sha256=
|
478
|
+
classiq/qmod/model_state_container.py,sha256=hODhsBvwgH6u6G2dPLyxrJQVx0hKuoc0aFdOkfXtqQ4,844
|
479
479
|
classiq/qmod/native/__init__.py,sha256=gm0L3ew0KAy0eSqaMQrvpnKWx85HoA1p9ADaAlyejdA,126
|
480
480
|
classiq/qmod/native/expression_to_qmod.py,sha256=a33dDr7BGWl7YhsFjpfAuI9Ys7amJjMo4DImSrD4NZg,7143
|
481
|
-
classiq/qmod/native/pretty_printer.py,sha256=
|
481
|
+
classiq/qmod/native/pretty_printer.py,sha256=8XMy-wBr9ZbEccpTUlrrY70_QauWsW6WoUVbacvlnoc,15529
|
482
482
|
classiq/qmod/pretty_print/__init__.py,sha256=jhR0cpXumOJnyb-zWnvMLpEuUOYPnnJ7DJmV-Zxpy1I,132
|
483
483
|
classiq/qmod/pretty_print/expression_to_python.py,sha256=QoRP817CFEp3Ad3Q3hxWW-hbVzWQbHQIGUHjZkpZDm8,7480
|
484
|
-
classiq/qmod/pretty_print/pretty_printer.py,sha256=
|
484
|
+
classiq/qmod/pretty_print/pretty_printer.py,sha256=JvRRqvrPROCpRwteLiEMetJabnEo7ZQCVaj-pTOzFbo,22286
|
485
485
|
classiq/qmod/python_classical_type.py,sha256=S_CbuxMHmYDgYcT31kCIy1xjhWvnAHHVJNWZ6lUPV8w,2513
|
486
486
|
classiq/qmod/qfunc.py,sha256=JGQdOOUkQaZdp4VbU_hQDiNIA5B0oOppK5Y5wKjcEIo,1298
|
487
|
-
classiq/qmod/qmod_constant.py,sha256=
|
487
|
+
classiq/qmod/qmod_constant.py,sha256=YawkwhhOLqFyFUyhE13Q_zCnex_Ki46hePRwGJmr5oU,4853
|
488
488
|
classiq/qmod/qmod_parameter.py,sha256=PpK4rzY0Hszgbzr_lclROcZ7JPqnhDJBYsSQkUjkcs8,4294
|
489
489
|
classiq/qmod/qmod_variable.py,sha256=T53o_GQWXPCIfW6bTIvNUTHoE3bodIHec8r6a_YJXfU,24105
|
490
490
|
classiq/qmod/quantum_callable.py,sha256=sthlH5UJyJsdOxpCW3_EW3JFIYd0r1K3Zec1CDbC2-0,2451
|
491
491
|
classiq/qmod/quantum_expandable.py,sha256=ZRg_NWpqM86rp8hhvRXGJytBJfWdwiw930ODq6Er3xY,16450
|
492
|
-
classiq/qmod/quantum_function.py,sha256=
|
492
|
+
classiq/qmod/quantum_function.py,sha256=78WTZwI3LHj93mUdZCg_YUocgMAOco96_ozg57xXo64,8941
|
493
493
|
classiq/qmod/semantics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
494
494
|
classiq/qmod/semantics/annotation.py,sha256=0IeRymMK20sPHzbs7EzGoqhZICQmR6-gXR3SS9sr9OE,1255
|
495
495
|
classiq/qmod/semantics/error_manager.py,sha256=KAnNaQE0YarkXTQ0du3mvCqGCbbH-d81sv2Ti-NpkL4,2783
|
@@ -503,11 +503,11 @@ classiq/qmod/semantics/validation/types_validation.py,sha256=DBtpqUR1Ua3t-AVUAdJ
|
|
503
503
|
classiq/qmod/symbolic.py,sha256=-pfC93Rfa685vBN0Z5ij8AaQB0aTfVNOrtaMyPykkLg,7607
|
504
504
|
classiq/qmod/symbolic_expr.py,sha256=LJoa9c6puMvUu4d5oU0SNzc7VXzSFBUNLf19ADzktLs,6133
|
505
505
|
classiq/qmod/symbolic_type.py,sha256=ded7bVfWmHFw8MoyivVDJsG5vZZVRQontOZYb1kCrTQ,162
|
506
|
-
classiq/qmod/synthesize_separately.py,sha256=
|
506
|
+
classiq/qmod/synthesize_separately.py,sha256=pORY__n4kd1vXX3b3Q_qMW1yREbwzuMEe4VMG1SC3p4,608
|
507
507
|
classiq/qmod/type_attribute_remover.py,sha256=NZmTXAsngWqthXjE8n-n6yE72fiWTFM12-TXXJ1kJ-Q,1242
|
508
508
|
classiq/qmod/utilities.py,sha256=z_VnIRmOYTWjJp2UlOcWK0rQRtMqysmP_Gr6WYY_nak,2734
|
509
509
|
classiq/qmod/write_qmod.py,sha256=x4K4N9XPQqGTett1vCZd-D2yVAo_DmXTJ_TyEm0fff8,1800
|
510
510
|
classiq/synthesis.py,sha256=kh2BZECSw1tYWMyVXtSvXvVpZR6rSn0JkG8xQ1uTaJQ,8029
|
511
|
-
classiq-0.
|
512
|
-
classiq-0.
|
513
|
-
classiq-0.
|
511
|
+
classiq-0.56.0.dist-info/METADATA,sha256=PT8srBveH0y8dQc_mRnIgpvCw70GBk4iqEZrCBo9x1o,3458
|
512
|
+
classiq-0.56.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
513
|
+
classiq-0.56.0.dist-info/RECORD,,
|
@@ -1,190 +0,0 @@
|
|
1
|
-
import dataclasses
|
2
|
-
import json
|
3
|
-
from collections.abc import Iterator, Sequence
|
4
|
-
from functools import cached_property
|
5
|
-
from typing import Any, Union
|
6
|
-
|
7
|
-
from typing_extensions import Self
|
8
|
-
|
9
|
-
from classiq.interface.exceptions import ClassiqExpansionError
|
10
|
-
from classiq.interface.generator.expressions.expression import Expression
|
11
|
-
from classiq.interface.generator.functions.port_declaration import (
|
12
|
-
PortDeclarationDirection,
|
13
|
-
)
|
14
|
-
from classiq.interface.model.handle_binding import HandleBinding
|
15
|
-
from classiq.interface.model.model import MAIN_FUNCTION_NAME, Model
|
16
|
-
from classiq.interface.model.native_function_definition import NativeFunctionDefinition
|
17
|
-
from classiq.interface.model.port_declaration import PortDeclaration
|
18
|
-
from classiq.interface.model.quantum_function_call import ArgValue, QuantumFunctionCall
|
19
|
-
from classiq.interface.model.quantum_function_declaration import (
|
20
|
-
PositionalArg,
|
21
|
-
QuantumOperandDeclaration,
|
22
|
-
)
|
23
|
-
from classiq.interface.model.quantum_type import QuantumType
|
24
|
-
|
25
|
-
from classiq import ClassicalParameterDeclaration
|
26
|
-
from classiq.model_expansions.scope import Evaluated, QuantumSymbol, evaluated_to_str
|
27
|
-
|
28
|
-
|
29
|
-
@dataclasses.dataclass(frozen=False)
|
30
|
-
class BlockFunctionInfo:
|
31
|
-
block_id: str
|
32
|
-
model: Model
|
33
|
-
inputs: set[str]
|
34
|
-
outputs: set[str]
|
35
|
-
inouts: set[str]
|
36
|
-
calls: set[str] = dataclasses.field(default_factory=set)
|
37
|
-
|
38
|
-
@classmethod
|
39
|
-
def from_call_converter(cls, call_converter: "CallToModelConverter") -> Self:
|
40
|
-
return cls(
|
41
|
-
block_id=call_converter.block_id,
|
42
|
-
model=call_converter.convert(),
|
43
|
-
inputs=set(call_converter.call.wiring_inputs),
|
44
|
-
outputs=set(call_converter.call.wiring_outputs),
|
45
|
-
inouts=set(call_converter.call.wiring_inouts),
|
46
|
-
)
|
47
|
-
|
48
|
-
|
49
|
-
class CallToModelConverter:
|
50
|
-
|
51
|
-
def __init__(
|
52
|
-
self,
|
53
|
-
call: QuantumFunctionCall,
|
54
|
-
positional_arg_declarations: Sequence[PositionalArg],
|
55
|
-
evaluated_arg: dict[str, Evaluated],
|
56
|
-
model: Model,
|
57
|
-
) -> None:
|
58
|
-
self.call = call
|
59
|
-
self._positional_arg_declarations = positional_arg_declarations
|
60
|
-
self._evaluated_arg = evaluated_arg
|
61
|
-
|
62
|
-
self._model = model
|
63
|
-
|
64
|
-
@cached_property
|
65
|
-
def block_id(self) -> str:
|
66
|
-
args_signature: dict = {}
|
67
|
-
for arg_declaration, evaluated_arg in zip(
|
68
|
-
self._positional_arg_declarations,
|
69
|
-
self._evaluated_arg.values(),
|
70
|
-
):
|
71
|
-
args_signature |= _get_arg_signature(arg_declaration, evaluated_arg)
|
72
|
-
return f"{self.call.func_name}__{json.dumps(args_signature)}"
|
73
|
-
|
74
|
-
def convert(self) -> Model:
|
75
|
-
return self._model.model_copy(
|
76
|
-
update={"functions": self._update_model_functions()}
|
77
|
-
)
|
78
|
-
|
79
|
-
def _update_model_functions(self) -> list[NativeFunctionDefinition]:
|
80
|
-
return [
|
81
|
-
(
|
82
|
-
self._create_new_main_function()
|
83
|
-
if function.name == MAIN_FUNCTION_NAME
|
84
|
-
else (
|
85
|
-
function.model_copy(update={"synthesis_data": None})
|
86
|
-
if function.name == self.call.function
|
87
|
-
else function
|
88
|
-
)
|
89
|
-
)
|
90
|
-
for function in self._model.functions
|
91
|
-
]
|
92
|
-
|
93
|
-
def _create_new_main_function(self) -> NativeFunctionDefinition:
|
94
|
-
return NativeFunctionDefinition(
|
95
|
-
name=MAIN_FUNCTION_NAME,
|
96
|
-
positional_arg_declarations=self._make_all_ports_outputs(),
|
97
|
-
body=[*self._allocate_ports(), self._update_call()],
|
98
|
-
)
|
99
|
-
|
100
|
-
def _make_all_ports_outputs(self) -> list[PortDeclaration]:
|
101
|
-
return [
|
102
|
-
_convert_port_to_output(port_declaration)
|
103
|
-
for port_declaration in self._positional_arg_declarations
|
104
|
-
if isinstance(port_declaration, PortDeclaration)
|
105
|
-
]
|
106
|
-
|
107
|
-
def _allocate_ports(self) -> Iterator[QuantumFunctionCall]:
|
108
|
-
return (
|
109
|
-
QuantumFunctionCall(
|
110
|
-
function="allocate",
|
111
|
-
positional_args=[
|
112
|
-
self._get_allocation_size(port_declaration.name),
|
113
|
-
HandleBinding(name=port_declaration.name),
|
114
|
-
],
|
115
|
-
)
|
116
|
-
for port_declaration in self._positional_arg_declarations
|
117
|
-
if isinstance(port_declaration, PortDeclaration)
|
118
|
-
and port_declaration.direction != PortDeclarationDirection.Output
|
119
|
-
)
|
120
|
-
|
121
|
-
def _get_allocation_size(self, port_declara_name: str) -> Expression:
|
122
|
-
port_value = self._evaluated_arg[port_declara_name].value
|
123
|
-
return Expression(expr=_get_reg_size(port_value, port_declara_name))
|
124
|
-
|
125
|
-
def _update_call(self) -> QuantumFunctionCall:
|
126
|
-
return self.call.model_copy(
|
127
|
-
update={"positional_args": self._evaluate_positional_args()}
|
128
|
-
)
|
129
|
-
|
130
|
-
def _evaluate_positional_args(self) -> list[ArgValue]:
|
131
|
-
return [
|
132
|
-
_get_positional_arg(arg, evaluated_arg)
|
133
|
-
for arg, evaluated_arg in zip(
|
134
|
-
self._positional_arg_declarations,
|
135
|
-
self._evaluated_arg.values(),
|
136
|
-
)
|
137
|
-
]
|
138
|
-
|
139
|
-
|
140
|
-
def _validate_quantum_type(port: Any, port_declara_name: str) -> QuantumType:
|
141
|
-
if not isinstance(port, QuantumSymbol):
|
142
|
-
raise ClassiqExpansionError(f"Port {port_declara_name!r} has incorrect type")
|
143
|
-
return port.quantum_type
|
144
|
-
|
145
|
-
|
146
|
-
def _get_reg_size(port: Any, port_declara_name: str) -> str:
|
147
|
-
quantum_type = _validate_quantum_type(port, port_declara_name)
|
148
|
-
return str(quantum_type.size_in_bits)
|
149
|
-
|
150
|
-
|
151
|
-
def _get_arg_signature(
|
152
|
-
arg_declaration: PositionalArg, evaluated_arg: Evaluated
|
153
|
-
) -> dict[str, str]:
|
154
|
-
arg_value = evaluated_arg.value
|
155
|
-
arg_name = arg_declaration.name
|
156
|
-
if isinstance(arg_declaration, ClassicalParameterDeclaration):
|
157
|
-
return {arg_name: evaluated_to_str(arg_value)}
|
158
|
-
if isinstance(arg_declaration, PortDeclaration):
|
159
|
-
quantum_type = _validate_quantum_type(arg_value, arg_name)
|
160
|
-
return {
|
161
|
-
arg_name: quantum_type.model_dump_json(exclude_none=True, exclude={"name"})
|
162
|
-
}
|
163
|
-
if isinstance(arg_declaration, QuantumOperandDeclaration):
|
164
|
-
raise NotImplementedError(
|
165
|
-
f"Synthesize separately does not support input operand: {arg_declaration.name!r}"
|
166
|
-
)
|
167
|
-
|
168
|
-
|
169
|
-
def _get_positional_arg(
|
170
|
-
arg_declaration: PositionalArg, evaluated_arg: Evaluated
|
171
|
-
) -> Union[Expression, HandleBinding]:
|
172
|
-
if isinstance(arg_declaration, ClassicalParameterDeclaration):
|
173
|
-
return Expression(expr=evaluated_to_str(evaluated_arg.value))
|
174
|
-
if isinstance(arg_declaration, PortDeclaration):
|
175
|
-
return HandleBinding(name=arg_declaration.name)
|
176
|
-
if isinstance(arg_declaration, QuantumOperandDeclaration):
|
177
|
-
raise NotImplementedError(
|
178
|
-
f"Synthesize separately does not support input operand: {arg_declaration.name!r}"
|
179
|
-
)
|
180
|
-
|
181
|
-
|
182
|
-
def _convert_port_to_output(port: PortDeclaration) -> PortDeclaration:
|
183
|
-
if port.direction == PortDeclarationDirection.Output:
|
184
|
-
return port
|
185
|
-
elif port.direction == PortDeclarationDirection.Inout:
|
186
|
-
return port.model_copy(update={"direction": PortDeclarationDirection.Output})
|
187
|
-
else:
|
188
|
-
raise NotImplementedError(
|
189
|
-
f"Synthesize separately does not support input ports: {port.name!r}"
|
190
|
-
)
|
File without changes
|