classiq 0.67.0__py3-none-any.whl → 0.68.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 (56) hide show
  1. classiq/_internals/api_wrapper.py +5 -1
  2. classiq/_internals/async_utils.py +1 -1
  3. classiq/_internals/authentication/password_manager.py +1 -1
  4. classiq/_internals/client.py +1 -1
  5. classiq/execution/execution_session.py +7 -3
  6. classiq/executor.py +7 -2
  7. classiq/interface/_version.py +1 -1
  8. classiq/interface/ast_node.py +1 -1
  9. classiq/interface/chemistry/operator.py +1 -1
  10. classiq/interface/debug_info/debug_info.py +15 -0
  11. classiq/interface/generator/arith/arithmetic.py +96 -1
  12. classiq/interface/generator/arith/arithmetic_expression_parser.py +1 -1
  13. classiq/interface/generator/generated_circuit_data.py +4 -2
  14. classiq/interface/generator/quantum_program.py +18 -1
  15. classiq/interface/generator/types/enum_declaration.py +33 -2
  16. classiq/interface/model/classical_if.py +2 -2
  17. classiq/interface/model/control.py +2 -2
  18. classiq/interface/model/invert.py +2 -2
  19. classiq/interface/model/power.py +2 -2
  20. classiq/interface/model/quantum_function_call.py +4 -0
  21. classiq/interface/model/repeat.py +2 -2
  22. classiq/interface/model/statement_block.py +1 -1
  23. classiq/interface/model/within_apply_operation.py +2 -2
  24. classiq/model_expansions/interpreters/generative_interpreter.py +78 -18
  25. classiq/model_expansions/quantum_operations/allocate.py +3 -1
  26. classiq/model_expansions/quantum_operations/assignment_result_processor.py +52 -0
  27. classiq/model_expansions/quantum_operations/bind.py +2 -1
  28. classiq/model_expansions/quantum_operations/block_evaluator.py +76 -0
  29. classiq/model_expansions/quantum_operations/classicalif.py +5 -4
  30. classiq/model_expansions/quantum_operations/composite_emitter.py +27 -0
  31. classiq/model_expansions/quantum_operations/emitter.py +16 -2
  32. classiq/model_expansions/quantum_operations/expression_evaluator.py +33 -0
  33. classiq/model_expansions/quantum_operations/handle_evaluator.py +28 -0
  34. classiq/model_expansions/quantum_operations/quantum_function_call.py +3 -2
  35. classiq/model_expansions/quantum_operations/repeat.py +2 -1
  36. classiq/model_expansions/quantum_operations/variable_decleration.py +2 -1
  37. classiq/model_expansions/sympy_conversion/expression_to_sympy.py +1 -1
  38. classiq/open_library/functions/__init__.py +1 -2
  39. classiq/open_library/functions/amplitude_amplification.py +8 -5
  40. classiq/open_library/functions/discrete_sine_cosine_transform.py +16 -13
  41. classiq/open_library/functions/grover.py +6 -10
  42. classiq/open_library/functions/modular_exponentiation.py +7 -13
  43. classiq/open_library/functions/state_preparation.py +16 -17
  44. classiq/open_library/functions/swap_test.py +1 -1
  45. classiq/open_library/functions/utility_functions.py +10 -2
  46. classiq/qmod/builtins/functions/chemistry.py +6 -38
  47. classiq/qmod/quantum_expandable.py +30 -6
  48. classiq/qmod/semantics/validation/types_validation.py +1 -1
  49. classiq/qmod/symbolic.py +2 -1
  50. classiq/qmod/utilities.py +2 -1
  51. classiq/qmod/write_qmod.py +10 -7
  52. classiq/synthesis.py +20 -7
  53. {classiq-0.67.0.dist-info → classiq-0.68.0.dist-info}/METADATA +1 -1
  54. {classiq-0.67.0.dist-info → classiq-0.68.0.dist-info}/RECORD +55 -51
  55. classiq/model_expansions/quantum_operations/shallow_emitter.py +0 -166
  56. {classiq-0.67.0.dist-info → classiq-0.68.0.dist-info}/WHEEL +0 -0
@@ -3,15 +3,15 @@ classiq/_analyzer_extras/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
3
3
  classiq/_analyzer_extras/_ipywidgets_async_extension.py,sha256=7zv7mANDaLHH8QRGyY9QGDPPKPTjKKYdoq22iJaq_Ns,2190
4
4
  classiq/_analyzer_extras/interactive_hardware.py,sha256=f7ad2HeFq1f-2dJtPpgOE_w2IFzm49W6P_c-MzqJ5qE,3257
5
5
  classiq/_internals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- classiq/_internals/api_wrapper.py,sha256=V0W1t7ftU3soIuczol_7a_A4Lx3NeXWIkm7vk7oSteI,16905
7
- classiq/_internals/async_utils.py,sha256=utfzFLuCqmvxTLgg3JhMi-sBMIQFVW2LU5dqUEAJLCM,3370
6
+ classiq/_internals/api_wrapper.py,sha256=-mrMyGyzWe7U46mDi4ErNo1fiNE_gYuyP5mA6F4AioU,17065
7
+ classiq/_internals/async_utils.py,sha256=c_tYbNQd_n7Ue9dp0O11pVozTQRXz32OmtOMvb1ozIQ,3371
8
8
  classiq/_internals/authentication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  classiq/_internals/authentication/auth0.py,sha256=K6yCnDUhIfgx-GfUHivak88_u06USHjXAjx9b3m5iek,3663
10
10
  classiq/_internals/authentication/authentication.py,sha256=58Xv1QtynXwEfBqIV5E3LnSkZBSWBHtEFy-Bvg0vQ_o,673
11
11
  classiq/_internals/authentication/device.py,sha256=dUii1-Z26j0NY4R6J4p0gjYSq5Goj-gwMxXPSnVANuE,4024
12
- classiq/_internals/authentication/password_manager.py,sha256=aVR3wt07EJNa1OcUOmM9Nyg9Y4w8-3XzzrxJNsBWUBM,4438
12
+ classiq/_internals/authentication/password_manager.py,sha256=nhJyr8IGrsq3oaGtD0UXZ_rCN4GPI-4LrTYHc1R--sQ,4464
13
13
  classiq/_internals/authentication/token_manager.py,sha256=XStkqCPUQEqc3uj6tt_XzfUIcUlyT-94tBZ8tpQIy_s,5280
14
- classiq/_internals/client.py,sha256=nw-NohjJNa0LsKjqG1bMOhVzJl_i0sCVto44Az9rTvY,12410
14
+ classiq/_internals/client.py,sha256=yYlyBkW9GvM5Y04A3nqX496fXqqU3ngXg7VTwYmIbwo,12411
15
15
  classiq/_internals/config.py,sha256=-UKKvPp_61sxXY-URqU1feLqlfh9ww4wCDH4yl14EiA,3534
16
16
  classiq/_internals/help.py,sha256=9gl64Y8nKW-f-8pYt7lMozOP6uERcIIf8dotgn_WKA0,460
17
17
  classiq/_internals/host_checker.py,sha256=D0rgnoZrHo62rYS32yCuYZSyMrMChZG5ITsJxwj0R5g,3969
@@ -89,20 +89,20 @@ classiq/applications/qsvm/qsvm_data_generation.py,sha256=BIXBAxYNAvwZi1pVQJeSPTa
89
89
  classiq/applications/qsvm/qsvm_model_constructor.py,sha256=9yknE3oDe1sDKtN3efeqVxmMjYIDAvMPUugNfzTH2Jk,4495
90
90
  classiq/execution/__init__.py,sha256=91aJlyrskj_FLmT-2atwIucYKAKsg4o8ZOR15axBFPM,1165
91
91
  classiq/execution/all_hardware_devices.py,sha256=KpLefEISE03FDdgFPGggXeG7NAxBW4090gN4272Dl-E,368
92
- classiq/execution/execution_session.py,sha256=Wr6kJjdBU1yrrBDxopBHdZowyy2WSC1-7D8kH1cudkw,16910
92
+ classiq/execution/execution_session.py,sha256=cjfA02_FbiFNbu7AgEEUAvcwsaV2r9vVxqQ5FiyPCdo,16986
93
93
  classiq/execution/iqcc.py,sha256=fG92ZwgZl_tAih0vndZpIKksVCQuLTk5pJy2X4LRkxA,4298
94
94
  classiq/execution/jobs.py,sha256=hRZK5n8xOdT67rb_qnGeb30MiTHax00uCaBgRr7usYE,10992
95
95
  classiq/execution/qnn.py,sha256=WGPvncz5uS2WxSY3-yBWt2LFiCk6Ug8WKWF-Kp-f7TM,2403
96
- classiq/executor.py,sha256=JukmHbvH43cXWBzr1-LPk5gDz4LItJncEUaghZwmldY,2686
96
+ classiq/executor.py,sha256=9mae_QMGZYT8CJ5QlS4XH7063OYrrDUnt8gAFV-OhRc,2773
97
97
  classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
98
- classiq/interface/_version.py,sha256=KAdpBo9J3PBap6xx-ONQo3jUahkv872cTuKJydlJOaY,197
98
+ classiq/interface/_version.py,sha256=pSnX6GDQXxypU2WHz5B4mdCUB5KlW-o_q2UI70lBiHc,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
102
102
  classiq/interface/analyzer/result.py,sha256=CJhZ7Q_VUCyKS1ivtyD9l9534efjEUY6C6Wwrb3kXak,5872
103
103
  classiq/interface/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
104
  classiq/interface/applications/qsvm.py,sha256=4dHVSZH--sv58SvxmpDHPh9JDr4qQUZbbGCeaEv6b1I,3408
105
- classiq/interface/ast_node.py,sha256=CWyvKNwoEppwPwprnM4lxOlNyBS49cqJe9Tq4-GexcU,840
105
+ classiq/interface/ast_node.py,sha256=tHMBLw-iTAZq724XTDkqg9hxh_8zKC73oKXmawP8Wd0,827
106
106
  classiq/interface/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  classiq/interface/backend/backend_preferences.py,sha256=UvmYBo5K4iKxhFj2aJWTNMA1g_GxWpRturPNOoRCcUo,20753
108
108
  classiq/interface/backend/ionq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -116,7 +116,7 @@ classiq/interface/chemistry/fermionic_operator.py,sha256=PGzi_2ZWO54LKMIJaC1unlk
116
116
  classiq/interface/chemistry/ground_state_problem.py,sha256=DHhbvby537IxglAxKxiqlyOraVWcKRYhnkEpzP9iPQg,3928
117
117
  classiq/interface/chemistry/ground_state_result.py,sha256=zXfQoiGbhPmrZrlB7jbeAXXj7UX0QN7WrOa1CgJwUQU,175
118
118
  classiq/interface/chemistry/molecule.py,sha256=TDHm-wub0xVwFa_1pdxSysWMLASOI1jXTQFJZhC5aZI,2792
119
- classiq/interface/chemistry/operator.py,sha256=L5bIuU-2fP94Ix-wf7HMk1DBlhbjQfmSBYOsaBvYCyM,11020
119
+ classiq/interface/chemistry/operator.py,sha256=CmRbPK41vAvLZVzMwX0ATMZTFOM8I9pwu1hGd_DMFRI,11021
120
120
  classiq/interface/combinatorial_optimization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
121
  classiq/interface/combinatorial_optimization/encoding_types.py,sha256=JSPqk36kLxEvUiFqUpxC-svEwLEPopYIlmlQWFarEqI,126
122
122
  classiq/interface/combinatorial_optimization/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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=p1IMfP5T9vcPO83FVyK5930JQKgErQVcjP4aEZqrf94,3682
144
+ classiq/interface/debug_info/debug_info.py,sha256=bbgvBCHN-wIW5Y2hPGuaQNym3GWS4YvX0GADZF8ZjG8,4181
145
145
  classiq/interface/enum_utils.py,sha256=QxkxLGgON8vdSzLZzHFlPEBJoGOqoIwpESEfLfRqN0w,312
146
146
  classiq/interface/exceptions.py,sha256=fXl3esnLP03zds09BLxIJSN4aIwx2PVPX0Do8awfLjg,4418
147
147
  classiq/interface/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -183,10 +183,10 @@ classiq/interface/generator/application_apis/finance_declarations.py,sha256=RfDM
183
183
  classiq/interface/generator/application_apis/qsvm_declarations.py,sha256=oDJ_74RDuitACGcHWUXGNo2JGMY8qzEIrP7mStDJ0rQ,100
184
184
  classiq/interface/generator/arith/__init__.py,sha256=3_jBZcaL8gQOiWx9lDj84K6rmJG2p_8MGCBw1aMtddg,135
185
185
  classiq/interface/generator/arith/argument_utils.py,sha256=2Q3KO4EEOehjwgKU2syrrzDOpSJSMqMB1U_r5ClJ7LM,3111
186
- classiq/interface/generator/arith/arithmetic.py,sha256=niUjyGe05EDrvxCPDVpmXfMyUHzmeKaGZOXUDDlGTX4,4469
186
+ classiq/interface/generator/arith/arithmetic.py,sha256=BVVbAvo2_jDb2GNZ6BeGSbdOybJSG2pIm20LQtN-800,7953
187
187
  classiq/interface/generator/arith/arithmetic_arg_type_validator.py,sha256=k7e9nIQOTJ1Dk1PD7jXZFBATbZNR93Lok-OVq6riZYI,1177
188
188
  classiq/interface/generator/arith/arithmetic_expression_abc.py,sha256=c9T_5m9B6Lq7vgNt3u1o8MGHSFo3OJJc9EdpaXP8Yqk,7168
189
- classiq/interface/generator/arith/arithmetic_expression_parser.py,sha256=rdzpQkfyxwr1gFm3s96H-qNyi0RKlkBpwx8RJPsM3Ac,5371
189
+ classiq/interface/generator/arith/arithmetic_expression_parser.py,sha256=KVbi0Q7DfzEIoqUyUbSg33UOWn8Ol6KF-IUUc60Jifw,5372
190
190
  classiq/interface/generator/arith/arithmetic_expression_validator.py,sha256=ze_k8gNKSEjKdGKA6oDTMG1ff1uF-IJ32jVgXkbG7SU,7291
191
191
  classiq/interface/generator/arith/arithmetic_operations.py,sha256=xwX4POh11BGSsFvlWXMctFWaNo02LDoQunZiQF6pDBk,1944
192
192
  classiq/interface/generator/arith/arithmetic_param_getters.py,sha256=P0RWHhu7UiWJ_qjF_SRW6GUcVtyAr8HFgZde3Lau3kQ,13367
@@ -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=hpdIlNw4YWQNMt9SaX_QbDysrAdenDGYomiGIYw-RKk,2898
253
- classiq/interface/generator/generated_circuit_data.py,sha256=_OmBXLwP9gE3D7sWwP2obszjacDVD55yRTnYK9neRC4,9715
253
+ classiq/interface/generator/generated_circuit_data.py,sha256=7-zGf3igjKrOdMlcHel10KMcz1CnVCq42i9Y0L4STXQ,9854
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
@@ -291,7 +291,7 @@ classiq/interface/generator/qft.py,sha256=SDLcPWYxshDfPl-tAfhpRFb30NpPRRFpje5Jrr
291
291
  classiq/interface/generator/qpe.py,sha256=C6CddpuD196TUVpUEvvlA9uaRLmFlTkwrHheaWbGojY,6526
292
292
  classiq/interface/generator/qsvm.py,sha256=Ry2iTC2NIoh0u9BsuwVaO-ICUBbRIF7Of9scJG4sGFs,3056
293
293
  classiq/interface/generator/quantum_function_call.py,sha256=jabmTxK2Q-n6eS2ZfK9SlGB7btShvWF8OGkdVbXcgf0,23916
294
- classiq/interface/generator/quantum_program.py,sha256=UtRrE2epg_gXAjmtgvQzA8jqEQ3C4iXlDn64w_9eZJY,6955
294
+ classiq/interface/generator/quantum_program.py,sha256=MUQ0y0GEMu9xM7o5V0YEk3OB3xj4cP_nNDz2EUz_2mg,7477
295
295
  classiq/interface/generator/randomized_benchmarking.py,sha256=D6KI_1fMF5oBydaal2WLmTSit6xSMtz0yDAIZMMO89Q,635
296
296
  classiq/interface/generator/range_types.py,sha256=X6CtSyimlpISz9QNbCdqqQkRg1pOGHEQCXy4aEeSwA4,2044
297
297
  classiq/interface/generator/register_role.py,sha256=moerPIO9gQUuG5pe43TemmScSVjTK7_gi-qbrhIgLOA,1147
@@ -323,7 +323,7 @@ classiq/interface/generator/transpiler_basis_gates.py,sha256=4MHl6uI3Fa8bl1w_kGQ
323
323
  classiq/interface/generator/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
324
324
  classiq/interface/generator/types/builtin_enum_declarations.py,sha256=kzrmQhyvIAO0FG1b4eHNVM7v0YYg5weXtLYYalejARE,2316
325
325
  classiq/interface/generator/types/compilation_metadata.py,sha256=TumieFiKwpt7tuje_CipXRJeg87YSr4hOg1uRr6cIU8,214
326
- classiq/interface/generator/types/enum_declaration.py,sha256=NLSkIANe33qubSDGmxROhNFZNuIDcJjRA-ZRuKhiZ5g,1712
326
+ classiq/interface/generator/types/enum_declaration.py,sha256=rHVCiFuvHsH_2g4u5LCRpl50-yk6XB1Ab8BpOqraxEI,3015
327
327
  classiq/interface/generator/types/qstruct_declaration.py,sha256=Qw6cHW_elZmrs4UO0z7lgS7TWb0hEUEJ5Ur-Ko0bCR4,485
328
328
  classiq/interface/generator/types/struct_declaration.py,sha256=2qKVV-pdqeUGiwKh2-5W2Ci4z0aQG4TG91MuQ82fa_A,959
329
329
  classiq/interface/generator/ucc.py,sha256=ZhjaEy4YJDkZwXLzlsFbjUn6k7ebyUJ_qKdLmxdxvp8,2699
@@ -354,34 +354,34 @@ classiq/interface/jobs.py,sha256=i8hrBR2qtptCbxNI-PVYZedH_EDehOe2i09JbJUlD1g,233
354
354
  classiq/interface/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
355
355
  classiq/interface/model/allocate.py,sha256=B3m-9wUU8SCgZUhKbxAcPLnKHFnT5zn0aKtIjLSqqiM,557
356
356
  classiq/interface/model/bind_operation.py,sha256=J0E6u8KOSB-vRcdpsukYpk1oc8efRohyX-PwLKh98Dc,1869
357
- classiq/interface/model/classical_if.py,sha256=uacO5reOHZrpILBa2Uq0gd1QA_Q3Ab05elzozA80oRo,631
357
+ classiq/interface/model/classical_if.py,sha256=r_dL4x2YI9_TtvuS0WXlCaWHV6cLWBKtxd0Dc9IlqNw,605
358
358
  classiq/interface/model/classical_parameter_declaration.py,sha256=tcAw-knjFqeHg_snv7qBJuJDrUhmL0v1-Q_YfVgRnEc,1261
359
- classiq/interface/model/control.py,sha256=Ws-6BqrUQSWdZL2eT4nTDKKC15fubx3EXFT4OHpLtWE,1560
359
+ classiq/interface/model/control.py,sha256=D2AxQG5Fb6uT-Bf1HYA20ESJ11Z0Nkkb6apHzD9_XOg,1534
360
360
  classiq/interface/model/handle_binding.py,sha256=2uZGm1cHSvPFfQ9HZCl6MMQXZn9d3ZUkXaZU5Qht0GI,10967
361
361
  classiq/interface/model/inplace_binary_operation.py,sha256=Q2CmF42Y975SOJ7gsZfGyRA5Jn9MKzyNle0sopCyCh4,1494
362
- classiq/interface/model/invert.py,sha256=zSxtKnk3u9SJD0IOJfMXc7b3CSscY3RnmRFFlVL7Tww,484
362
+ classiq/interface/model/invert.py,sha256=-NuT2Fb9sNIvS6x_14wqLSiqngRlCdmdmBqpAzZMp6M,458
363
363
  classiq/interface/model/model.py,sha256=TOg2Jb9I9LmMmK5waNtK_GDHE7K6RY0gr-QiJRtr-3A,6991
364
364
  classiq/interface/model/model_visitor.py,sha256=LXCbuvjgW_0gtSLB9dfnf4BL6CF7V8b0duA9xCvBUfo,445
365
365
  classiq/interface/model/native_function_definition.py,sha256=BPB_JfwPL6ftKlf9ceGdYOT27Fw87VbvTMDVrXJZPVI,1016
366
366
  classiq/interface/model/parameter.py,sha256=otI4w5Oc4EPAALfZxDf-QxBlMSXP_CtKaUa7STMdaiw,333
367
367
  classiq/interface/model/phase_operation.py,sha256=sZh00h1wOkZLiwdv_-vqJRtYJxZzmsNqCjGm2z3aXRQ,323
368
368
  classiq/interface/model/port_declaration.py,sha256=wN2t9s2vUcUe4iKKHhSov14ndjkl3eJyM3aE08Kf8os,1650
369
- classiq/interface/model/power.py,sha256=BSY9p935cgmlwUJdKG-_ERK5LYicNp_iG6kAR86Lr0s,578
369
+ classiq/interface/model/power.py,sha256=IvDYeosP_ZUh75VOf8taKHuX6AJnjszdPJRbjQ4ZonA,552
370
370
  classiq/interface/model/quantum_expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
371
371
  classiq/interface/model/quantum_expressions/amplitude_loading_operation.py,sha256=9vo9duieNmLwGoUn6Ey4C0YSqYymbt3Tb6eo80qATIs,2449
372
372
  classiq/interface/model/quantum_expressions/arithmetic_operation.py,sha256=kqABvyr-niat293lHqBmPhV0Ks3WUgHJ3mevmyD1zD8,2732
373
373
  classiq/interface/model/quantum_expressions/quantum_expression.py,sha256=f_QrCf130IsVs_Nswwmr0_XYOJzvyx4hY8rWxE5lOA4,2133
374
- classiq/interface/model/quantum_function_call.py,sha256=Of6r8UeJAOJfHCCClicTeBIW950-UtNCbK7MZ0ISVF8,7063
374
+ classiq/interface/model/quantum_function_call.py,sha256=StvEKlUj1601SSLReop10m_kbTGv2knp27NFEeL7jSQ,7238
375
375
  classiq/interface/model/quantum_function_declaration.py,sha256=Op9ICNTvwCSQNx1Vr3HE9b8AkVkjwxNLccPZoWKxziQ,8337
376
376
  classiq/interface/model/quantum_lambda_function.py,sha256=cATqykbArV6c9qmSNtqRgDQjjvCfRvYeC3-S5gJW-wg,1930
377
377
  classiq/interface/model/quantum_statement.py,sha256=9o8l2h5dXkiyYZy8Ws5mcmlACFE52P1S2BzbHWWmiNw,3204
378
378
  classiq/interface/model/quantum_type.py,sha256=14em6BU4QzknydM1vMiFdJPXyYZSmUvncyz5LxIYGvk,9426
379
379
  classiq/interface/model/quantum_variable_declaration.py,sha256=Vmx-aHnss8E_ghqX_wi4Njp-dEtYK-WwYHtHAwmGZxk,229
380
- classiq/interface/model/repeat.py,sha256=Ex9K1YJjXydZTRUBCI_tkSHmrH1RXI4FdmfiGlxk-vA,598
381
- classiq/interface/model/statement_block.py,sha256=7zOcHfPmNp34PcbNmjS1HRnxMY7xGn7SjTOOz7oi4xY,1984
380
+ classiq/interface/model/repeat.py,sha256=7VISv5cF9PXpzAovjF63YWxaR3FLIZknqrkgN4yMODQ,572
381
+ classiq/interface/model/statement_block.py,sha256=kcz2q2V9the5vdKeJNc-6Ph7RSMKBMV05ABw0vyDo-E,1984
382
382
  classiq/interface/model/validation_handle.py,sha256=dbaY2ck5g36RkY1peYVxFXK_CFyA7L0k5flADpu9s68,1577
383
383
  classiq/interface/model/variable_declaration_statement.py,sha256=zI6erlZhoyiZHOhPzSjLNokqBeoDZvz8Jkbp0kIUPgQ,334
384
- classiq/interface/model/within_apply_operation.py,sha256=DYeLurPlWubR0uE13ueVuBD31rJFb8wXv2SbJeClStU,539
384
+ classiq/interface/model/within_apply_operation.py,sha256=05i-KK0M5wemD4cwqMtMA5ZIFQwTcuBvyDmsCZMp0TY,513
385
385
  classiq/interface/pyomo_extension/__init__.py,sha256=ugaIPjswYK2umc_Re5418gPHqocWJSw9OdB8btP4wTQ,887
386
386
  classiq/interface/pyomo_extension/equality_expression.py,sha256=OyPnNRnIyAN008MzYNU6W5QnmPYOGJQb4RewQFqQ310,103
387
387
  classiq/interface/pyomo_extension/inequality_expression.py,sha256=JMVE4VnMGi99KHtqIcIFf3i0nOMybe2_tPQodms-YPs,105
@@ -412,24 +412,28 @@ classiq/model_expansions/generative_functions.py,sha256=_Vi3qPuC3xVacObu1YG_J-Wi
412
412
  classiq/model_expansions/interpreters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
413
413
  classiq/model_expansions/interpreters/base_interpreter.py,sha256=dMRyiwoOtWhsnMFxvIN40HJ9-4OJl90n33awKfse1tM,11491
414
414
  classiq/model_expansions/interpreters/frontend_generative_interpreter.py,sha256=db1BKh-MDWqLTK8WCXpbNYxxQM4mjqWIhwFtDil7Vd0,3768
415
- classiq/model_expansions/interpreters/generative_interpreter.py,sha256=dVmn6HF3rWs9EhMbTN1l0_lJ3j__-JJsgay6uiSXMtg,9419
415
+ classiq/model_expansions/interpreters/generative_interpreter.py,sha256=g24aYO-E5VnGKaAjIBF-sC1dCu8SxEhWOX4mwCEtSkE,11253
416
416
  classiq/model_expansions/model_tables.py,sha256=dlrOGRS2x4Fd_dzClIcV7V8edmbbQzePv9eqxtJQrpo,620
417
417
  classiq/model_expansions/quantum_operations/__init__.py,sha256=2Z8m4wz9Rfrw5s2izHbZFhAoaJ5U-ohbGE3x8t4e63c,473
418
- classiq/model_expansions/quantum_operations/allocate.py,sha256=0fazqUM1CoHAkh-qpFddpSWNpk6PWDDRDxhYeHwqeoA,2975
419
- classiq/model_expansions/quantum_operations/bind.py,sha256=b7SCRunsBq4z3tkCcfxKQ-oFKCMxifJlTtr9y62EjqA,4537
418
+ classiq/model_expansions/quantum_operations/allocate.py,sha256=Y00O9rVbXHt_yShLv63UJHO4gju0L-ft4I-xIvSNlFE,3037
419
+ classiq/model_expansions/quantum_operations/assignment_result_processor.py,sha256=EgjohrHbr5KwOTwsB74An235Vc2Vxybt48MJGRLZhpc,2235
420
+ classiq/model_expansions/quantum_operations/bind.py,sha256=KCX_J94-m3taogRGQN7d9sphJyM0XTYaGW_ssBlwIe4,4557
421
+ classiq/model_expansions/quantum_operations/block_evaluator.py,sha256=Fz1bG6UyuDmAqdhJnnyAHN5qi8N0_zd2A8ZR0mUBUZc,2646
420
422
  classiq/model_expansions/quantum_operations/call_emitter.py,sha256=ZP-fMggBa7wguh6C-nxoezDh4X8UaJHrXOszRMqbkH8,13562
421
- classiq/model_expansions/quantum_operations/classicalif.py,sha256=-vysjguhtZbci8VmghhuoBGZmEqTpYjqF_iZlJTHX4w,2291
423
+ classiq/model_expansions/quantum_operations/classicalif.py,sha256=9fHQexnWoZ6C5SBmWnDSbvvHzbid3kxr8yQILq0-m-w,2326
424
+ classiq/model_expansions/quantum_operations/composite_emitter.py,sha256=B09YGldhWcqdNiyhNzQQU-85mJ_9cRrtNgruDvuyEUE,824
422
425
  classiq/model_expansions/quantum_operations/declarative_call_emitter.py,sha256=BlcjV0AG05qpKyWFD2-GJQKqTDWcFfRl7y1z3yIpllc,3209
423
- classiq/model_expansions/quantum_operations/emitter.py,sha256=23KS02bO9uMmTzWjyUBNmPj0wfL9cENbjOGsnJBL67U,6649
424
- classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=BN5K0h3FDR41kohOXyilp7bn0T5SHwnMDCpPmtAZQbY,2339
425
- classiq/model_expansions/quantum_operations/repeat.py,sha256=mXQOp90_0rg8iMIZ_mJTO7XXQP9sRWPaqC4jv3x-91U,2513
426
- classiq/model_expansions/quantum_operations/shallow_emitter.py,sha256=7gGrJyOInnDdsj-utFNWNfQ1XKQHNYjGgPiNJt-v6EA,6753
427
- classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=rtr3SgbdPzHnNgC_D6s4uV2EJ7c3lWtrkKTp3ZaxOI0,1652
426
+ classiq/model_expansions/quantum_operations/emitter.py,sha256=cGj9yi3JgEpEOxyQ6eoWKUAXt1yaiyfgQjGdoFtlOjM,7219
427
+ classiq/model_expansions/quantum_operations/expression_evaluator.py,sha256=N5a1uYsJRwkWWPOcjOvt4op79LzUy7qA2KiV3Ys00Fg,1353
428
+ classiq/model_expansions/quantum_operations/handle_evaluator.py,sha256=DtxQT24bE5IzaaP8U2UdDRZz8GjKeWkxpLhW8lgrpV8,1048
429
+ classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=wCynvYPJBcRF4VrgY3Ox-_KpKybIytQOskV7-t2u8kg,2364
430
+ classiq/model_expansions/quantum_operations/repeat.py,sha256=j48wjrrF4N5KzKwKPGejD7sFs2H8ch0Te5Qd_jf_wNg,2533
431
+ classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=y9wcBFKXxcBd-YkAnNSn_1cQr9fuUoJzOtBgUlbDmrs,1672
428
432
  classiq/model_expansions/scope.py,sha256=HkgtLjFvs1dEWOi-W8qHDQfzMR-Oyhowa1QiOy7O-8I,7992
429
433
  classiq/model_expansions/scope_initialization.py,sha256=IdQaV0MrQXUOiDX1rI61w4M5iwWwI0WZDZqcFpPBwhg,6346
430
434
  classiq/model_expansions/sympy_conversion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
431
435
  classiq/model_expansions/sympy_conversion/arithmetics.py,sha256=7ZKg1C92wUdxtFhrT4VuI9mNvH2a1z1R8lbWYFhYczc,1116
432
- classiq/model_expansions/sympy_conversion/expression_to_sympy.py,sha256=Hz7a1Gtg9_JoQtxdJuE08iDfIMahnmOzlljUE8VBozI,5861
436
+ classiq/model_expansions/sympy_conversion/expression_to_sympy.py,sha256=EnCLR_ZvkGRDOJ1xwdtxwz_BrBf5fIX_WET8h9NPa5A,5873
433
437
  classiq/model_expansions/sympy_conversion/sympy_to_python.py,sha256=KfjLPgRvSVWrsC73ALkFgP4sMVOAJC3QZV6Y-8XfloY,4101
434
438
  classiq/model_expansions/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
435
439
  classiq/model_expansions/transformers/ast_renamer.py,sha256=Ve3ix6u_xbbxqU2SF0Z4F0-4oIhN8lyUPID1O387C-U,806
@@ -442,21 +446,21 @@ classiq/model_expansions/visitors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
442
446
  classiq/model_expansions/visitors/boolean_expression_transformers.py,sha256=a8ITXY48uROZFd9MF8tXdXs14Uxh8XbBpuvRXvRehjY,8067
443
447
  classiq/model_expansions/visitors/variable_references.py,sha256=s8QXXTmNTHAx8pF-PB4w4kdD6Fy0_b5rbbfeb_O8AoI,5114
444
448
  classiq/open_library/__init__.py,sha256=bmg_qqXCXo85hcU7_QCce-qYGrpAVSFNwTKCClsclrg,114
445
- classiq/open_library/functions/__init__.py,sha256=SfrTkuDTrsM3rlICLvQFqESDHUpEkq_EFCmQ3YlIH0Y,3235
446
- classiq/open_library/functions/amplitude_amplification.py,sha256=3_It6dhoazz12HVpZS5WdRguwNnJ_gaAhuBYzCZmsx8,4352
449
+ classiq/open_library/functions/__init__.py,sha256=hpujKWNxAKgg2QHMDEM6AjEpoHBcJ73Wu9MRNqzjetE,3213
450
+ classiq/open_library/functions/amplitude_amplification.py,sha256=xCvcI1UofoFsIWG2b69_cof6DOspJwWS7iRQUKGPGA8,4339
447
451
  classiq/open_library/functions/amplitude_estimation.py,sha256=iCkca5SQN_HQoJWk1_tLT56fHT72hu5QIt2pxSZQRko,1766
448
- classiq/open_library/functions/discrete_sine_cosine_transform.py,sha256=Gc9lsp8v2bRZlUc0PoLhKnCso7XASP10i2TKiOisH4Q,4476
449
- classiq/open_library/functions/grover.py,sha256=FWCzk0h2KLqu0qKqtCbSSaB7GlXrZ1d_Etwm7sfL0C8,4541
452
+ classiq/open_library/functions/discrete_sine_cosine_transform.py,sha256=8wYZJ_6IrShW7gDx4vH90Rkw3vaWnsIjuGC3o2KJ62E,4534
453
+ classiq/open_library/functions/grover.py,sha256=iz5We03cl_TGhLWKaYBEInVrenvc86PFcBkoFGwPfiM,4417
450
454
  classiq/open_library/functions/hea.py,sha256=D3bRetHb74SIyd4FMCJcS2-dYPZuQQ2RLVDC0P6Yd5E,4984
451
455
  classiq/open_library/functions/linear_pauli_rotation.py,sha256=5I6OmTyQY1xD6yDH6DY2zKJ8jxAn3YwbINi5uBLk-uc,2659
452
- classiq/open_library/functions/modular_exponentiation.py,sha256=J_HAsbnYyB5dOzyRkwPO-sUkQp7l5NizQ_kVFLO0MM0,6613
456
+ classiq/open_library/functions/modular_exponentiation.py,sha256=-UVoecnwj3Xkk3ORuyMLcOI2zHGX8uXGDqiK71oNKRI,6441
453
457
  classiq/open_library/functions/qaoa_penalty.py,sha256=Uz_ZSn7fRwynP5w2eSOEcft2z4bjJ0DOEyuLACO8ntc,3970
454
458
  classiq/open_library/functions/qft_functions.py,sha256=wSklzkJDB61tOYkrkvng2fxfDi6jC9Gu-NLOa-3L5jk,1442
455
459
  classiq/open_library/functions/qpe.py,sha256=e7MBpOthBn73BdqhWpNGT0lkd6Jw3ZG7tE6n--IM0jc,2140
456
460
  classiq/open_library/functions/qsvt.py,sha256=-w-byEltA7sZyOfLZrOUJcN_OQKNgrrb9woCoe3YLlM,14511
457
- classiq/open_library/functions/state_preparation.py,sha256=BTzK1-4oAKlG8X61gwqHDEPxG_Lp1m2pUFi5LzOIyg8,10598
458
- classiq/open_library/functions/swap_test.py,sha256=qf1lJ3vxeFpkuvl48BktuA2Q1FkkpieW8Q5oG-nZNSY,1051
459
- classiq/open_library/functions/utility_functions.py,sha256=tJvWPcMxO7emo_8kvg_D3PRDHBtaOPppxwtN8yMA22k,2254
461
+ classiq/open_library/functions/state_preparation.py,sha256=mx8EgXGoNsaWgsU56FfTNy_JOq2cVBoH0p8Un8cROXk,10603
462
+ classiq/open_library/functions/swap_test.py,sha256=hAjiJjZGeJP2qzEkVYmBVlEK44VcNibWZ-KqJwPEcFY,1048
463
+ classiq/open_library/functions/utility_functions.py,sha256=JJYEOBIhJC4xICf3kjR5kayIZM4y5RADy9hwTO2ibnc,2601
460
464
  classiq/open_library/functions/variational.py,sha256=KYoqPKYRjgUXk_10RvogV0YiCG5kl7GZBHBJeeX82II,1715
461
465
  classiq/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
462
466
  classiq/qmod/__init__.py,sha256=ktAnNYCn6UJGvpMjwEjed3MKtdOwpevBD3JPErM7lqs,842
@@ -469,7 +473,7 @@ classiq/qmod/builtins/functions/__init__.py,sha256=ByXIAnbrXJKyZ_O_3NtzjOMWHluPV
469
473
  classiq/qmod/builtins/functions/allocation.py,sha256=rdhL3sBbaX_-esd9N7uF9d2QmrjfJR2ARK_5bUqDMm8,6002
470
474
  classiq/qmod/builtins/functions/arithmetic.py,sha256=EBi7mT1rXjGW8uf7yBfrdqURM480Tvrwvyn7wzsTWmU,1290
471
475
  classiq/qmod/builtins/functions/benchmarking.py,sha256=TYY1VRd5DHl-mKTKeW5wF1txZgFsb3yPXM_rdgoLWCo,250
472
- classiq/qmod/builtins/functions/chemistry.py,sha256=Wl8ktlY0U_M-mDXozcCht44_flZtwImIiGeAMr7hs4s,2126
476
+ classiq/qmod/builtins/functions/chemistry.py,sha256=Ifvbh1uAofEvHigOjtRoW9OoEMnmXQ87lTwGC8UjTWQ,1162
473
477
  classiq/qmod/builtins/functions/exponentiation.py,sha256=FFd-yM37Bk36BchjbflC6l_1n4YPFxHv_lSyLR5hsn4,4095
474
478
  classiq/qmod/builtins/functions/finance.py,sha256=zo-UZ_R_8UMw0FCLJQsw_CEMAKV4derY00tnbAPC2yw,861
475
479
  classiq/qmod/builtins/functions/mid_circuit_measurement.py,sha256=9Xz-VxR07K5LS4qaw7u5MT39o7_zIEYRsRp0lArC0Zg,330
@@ -498,7 +502,7 @@ classiq/qmod/qmod_constant.py,sha256=YawkwhhOLqFyFUyhE13Q_zCnex_Ki46hePRwGJmr5oU
498
502
  classiq/qmod/qmod_parameter.py,sha256=PpK4rzY0Hszgbzr_lclROcZ7JPqnhDJBYsSQkUjkcs8,4294
499
503
  classiq/qmod/qmod_variable.py,sha256=UJqlPiHKTpi8GtcfnuWFS0QQ7NmB4AyKBeFoB8L9VZM,24017
500
504
  classiq/qmod/quantum_callable.py,sha256=sthlH5UJyJsdOxpCW3_EW3JFIYd0r1K3Zec1CDbC2-0,2451
501
- classiq/qmod/quantum_expandable.py,sha256=qs35-qMGm_J92Pnem_Juw18Wv3DZQWlqy6-_kuWeMLA,17020
505
+ classiq/qmod/quantum_expandable.py,sha256=3GjFdIP7rDv5SMG9scE3_niu04tWELS6u7it2zpRZUg,17640
502
506
  classiq/qmod/quantum_function.py,sha256=q3MMV0gWLtAy7b-Xv80dlQnjkkiy5V_e1RyJx0bImfg,12827
503
507
  classiq/qmod/semantics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
504
508
  classiq/qmod/semantics/annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -514,14 +518,14 @@ classiq/qmod/semantics/validation/function_name_collisions_validation.py,sha256=
514
518
  classiq/qmod/semantics/validation/main_validation.py,sha256=K7QKjbP1pfNipf6bAiW3p3CAyAN7siN0fwS9hFRqcPk,1259
515
519
  classiq/qmod/semantics/validation/model_validation.py,sha256=BMeleBpQ7WkEi2LNh4jPfFCSnjK4ohcb4LSEwj2hJOk,881
516
520
  classiq/qmod/semantics/validation/signature_validation.py,sha256=WZerCfEwgbCPmXD34iHhXGVATMhJ86sg-dfdOHFZNGg,922
517
- classiq/qmod/semantics/validation/types_validation.py,sha256=fKpSyAP0LGbl7inSINuoEzPMD8e08NA0aozVbIvDPfg,4855
518
- classiq/qmod/symbolic.py,sha256=kmS-BWe0QCenq4i0WkzreFZsvbpgUv9RoSOQHCg3UKg,7607
521
+ classiq/qmod/semantics/validation/types_validation.py,sha256=uVyW1WlDvUQU7emzHT75QTS0huIlFZr9DgUXLQ7s7vQ,4856
522
+ classiq/qmod/symbolic.py,sha256=bE3BYvSp7EjHYMXFtrhLBtGWAXXAZw6jztxs8mu8Aig,7643
519
523
  classiq/qmod/symbolic_expr.py,sha256=LJoa9c6puMvUu4d5oU0SNzc7VXzSFBUNLf19ADzktLs,6133
520
524
  classiq/qmod/symbolic_type.py,sha256=ded7bVfWmHFw8MoyivVDJsG5vZZVRQontOZYb1kCrTQ,162
521
525
  classiq/qmod/type_attribute_remover.py,sha256=NZmTXAsngWqthXjE8n-n6yE72fiWTFM12-TXXJ1kJ-Q,1242
522
- classiq/qmod/utilities.py,sha256=O39RtmkiCtpvhCk76WvRm0jMDraEYDQAiPTGcnvqfmI,3738
523
- classiq/qmod/write_qmod.py,sha256=Oo-j_rSfcmzC5MOn0Vq334vv_OTvdD4P7K9pv-gbo8c,1833
524
- classiq/synthesis.py,sha256=WLk3wpX_xPiAMstF9PGMO5SWVb_qqa1sN2Nj3MekX34,8113
525
- classiq-0.67.0.dist-info/METADATA,sha256=T7RqM59p4ss3UyoEUoO7OXIPysqGLtGEdir5fBSCv2w,3497
526
- classiq-0.67.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
527
- classiq-0.67.0.dist-info/RECORD,,
526
+ classiq/qmod/utilities.py,sha256=vP29XoMPcr0IunqNH5Dx7MjOFGLx7dB1xg7Yr8Bfp7o,3779
527
+ classiq/qmod/write_qmod.py,sha256=Q3TWQU9p_Uy42STmX5GA_4Ts2TTOgYjt7I8LTRxTbb0,2047
528
+ classiq/synthesis.py,sha256=INczJsOwNcXXkDvA6FQ5UDaKzc1xfM4FiuOJCSh71Z8,8837
529
+ classiq-0.68.0.dist-info/METADATA,sha256=76anZSheh0NE6WY_0SDA3ICxBGv6NkP_q0iWnqEdBIA,3497
530
+ classiq-0.68.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
531
+ classiq-0.68.0.dist-info/RECORD,,
@@ -1,166 +0,0 @@
1
- import ast
2
- from typing import TYPE_CHECKING, Any, Optional, TypeVar
3
-
4
- from classiq.interface.generator.arith.arithmetic import compute_arithmetic_result_type
5
- from classiq.interface.generator.expressions.expression import Expression
6
- from classiq.interface.generator.functions.port_declaration import (
7
- PortDeclarationDirection,
8
- )
9
- from classiq.interface.model.handle_binding import HandleBinding
10
- from classiq.interface.model.quantum_expressions.arithmetic_operation import (
11
- ArithmeticOperation,
12
- ArithmeticOperationKind,
13
- )
14
- from classiq.interface.model.quantum_expressions.quantum_expression import (
15
- QuantumAssignmentOperation,
16
- )
17
- from classiq.interface.model.quantum_statement import QuantumOperation, QuantumStatement
18
-
19
- from classiq.model_expansions.closure import Closure
20
- from classiq.model_expansions.evaluators.quantum_type_utils import copy_type_information
21
- from classiq.model_expansions.quantum_operations.emitter import Emitter
22
- from classiq.model_expansions.scope import QuantumSymbol, Scope
23
- from classiq.model_expansions.transformers.ast_renamer import rename_variables
24
- from classiq.model_expansions.visitors.variable_references import VarRefCollector
25
-
26
- if TYPE_CHECKING:
27
- from classiq.model_expansions.interpreters.base_interpreter import BaseInterpreter
28
-
29
-
30
- QuantumOperationT = TypeVar("QuantumOperationT", bound=QuantumOperation)
31
- _BLOCK_RENAMES = {
32
- "compute": "within",
33
- "action": "apply",
34
- }
35
- _REVERSE_BLOCK_RENAMES = {rename: name for name, rename in _BLOCK_RENAMES.items()}
36
-
37
-
38
- class ShallowEmitter(Emitter[QuantumOperation]):
39
- def __init__(
40
- self,
41
- interpreter: "BaseInterpreter",
42
- operation_name: str,
43
- *,
44
- components: Optional[list[str]] = None,
45
- ) -> None:
46
- super().__init__(interpreter)
47
- self._operation_name = operation_name
48
- self._components: list[str] = components or []
49
-
50
- def emit(self, op: QuantumOperation, /) -> None:
51
- expanded_components: dict[str, Any] = {}
52
- blocks, expressions, handles = self._split_components(op)
53
-
54
- if len(blocks) > 0:
55
- if op.is_generative():
56
- expanded_blocks = self.expand_generative_blocks(op)
57
- else:
58
- expanded_blocks = self.expand_blocks(op, blocks)
59
- expanded_components.update(expanded_blocks)
60
-
61
- for expression_name in expressions:
62
- expression = getattr(op, expression_name)
63
- expression = self._evaluate_expression(expression, preserve_bool_ops=True)
64
- for symbol in self._get_symbols_in_expression(expression):
65
- self._capture_handle(symbol.handle, PortDeclarationDirection.Inout)
66
- expanded_components[expression_name] = expression
67
-
68
- for handle_name in handles:
69
- handle = getattr(op, handle_name)
70
- expanded_components[handle_name] = self._interpreter.evaluate(
71
- handle
72
- ).value.handle
73
- expanded_components["back_ref"] = op.uuid
74
- op = op.model_copy(update=expanded_components)
75
- if isinstance(op, QuantumAssignmentOperation):
76
- self._post_process_assignment(op)
77
- self._builder.emit_statement(op)
78
-
79
- def _post_process_assignment(self, op: QuantumAssignmentOperation) -> None:
80
- if (
81
- isinstance(op, ArithmeticOperation)
82
- and op.operation_kind == ArithmeticOperationKind.Assignment
83
- ):
84
- direction = PortDeclarationDirection.Output
85
- self._update_result_type(op)
86
- else:
87
- direction = PortDeclarationDirection.Inout
88
- self._capture_handle(op.result_var, direction)
89
-
90
- def _split_components(
91
- self, op: QuantumOperation
92
- ) -> tuple[list[str], list[str], list[str]]:
93
- blocks = self._filter_components(op, list)
94
- expressions = self._filter_components(op, Expression)
95
- handles = self._filter_components(op, HandleBinding)
96
- return blocks, expressions, handles
97
-
98
- def _filter_components(
99
- self, op: QuantumOperation, component_type: type
100
- ) -> list[str]:
101
- return [
102
- component
103
- for component in self._components
104
- if isinstance(getattr(op, component, None), component_type)
105
- ]
106
-
107
- def expand_blocks(
108
- self, op: QuantumOperation, block_names: list[str]
109
- ) -> dict[str, list[QuantumStatement]]:
110
- blocks = {
111
- _BLOCK_RENAMES.get(block, block): block_statements
112
- for block in block_names
113
- if (block_statements := getattr(op, block)) is not None
114
- }
115
- block_closure = Closure(
116
- name=self._operation_name,
117
- scope=Scope(parent=self._current_scope),
118
- blocks=blocks,
119
- )
120
- context = self._expand_operation(block_closure)
121
- return {
122
- block: context.statements(_BLOCK_RENAMES.get(block, block))
123
- for block in block_names
124
- }
125
-
126
- def expand_generative_blocks(
127
- self, op: QuantumOperation
128
- ) -> dict[str, list[QuantumStatement]]:
129
- blocks = [block for block in self._components if op.has_generative_block(block)]
130
- context = self._expand_generative_context(op, self._operation_name, blocks)
131
- return {
132
- _REVERSE_BLOCK_RENAMES.get(block, block): context.statements(block)
133
- for block in blocks
134
- }
135
-
136
- def _update_result_type(self, op: ArithmeticOperation) -> None:
137
- expr = self._evaluate_expression(op.expression)
138
- symbols = self._get_symbols_in_expression(expr)
139
- expr_str = rename_variables(
140
- expr.expr,
141
- {str(symbol.handle): symbol.handle.identifier for symbol in symbols}
142
- | {symbol.handle.qmod_expr: symbol.handle.identifier for symbol in symbols},
143
- )
144
- for symbol in symbols:
145
- expr_str = expr_str.replace(
146
- symbol.handle.qmod_expr, symbol.handle.identifier
147
- )
148
- result_type = compute_arithmetic_result_type(
149
- expr_str,
150
- {symbol.handle.identifier: symbol.quantum_type for symbol in symbols},
151
- self._machine_precision,
152
- )
153
- result_symbol = self._interpreter.evaluate(op.result_var).as_type(QuantumSymbol)
154
- copy_type_information(
155
- result_type, result_symbol.quantum_type, str(op.result_var)
156
- )
157
-
158
- def _get_symbols_in_expression(self, expr: Expression) -> list[QuantumSymbol]:
159
- vrc = VarRefCollector(ignore_duplicated_handles=True)
160
- vrc.visit(ast.parse(expr.expr))
161
- handles = dict.fromkeys(
162
- handle
163
- for handle in vrc.var_handles
164
- if isinstance(self._current_scope[handle.name].value, QuantumSymbol)
165
- )
166
- return [self._interpreter.evaluate(handle).value for handle in handles]