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.
- classiq/_internals/api_wrapper.py +5 -1
- classiq/_internals/async_utils.py +1 -1
- classiq/_internals/authentication/password_manager.py +1 -1
- classiq/_internals/client.py +1 -1
- classiq/execution/execution_session.py +7 -3
- classiq/executor.py +7 -2
- classiq/interface/_version.py +1 -1
- classiq/interface/ast_node.py +1 -1
- classiq/interface/chemistry/operator.py +1 -1
- classiq/interface/debug_info/debug_info.py +15 -0
- classiq/interface/generator/arith/arithmetic.py +96 -1
- classiq/interface/generator/arith/arithmetic_expression_parser.py +1 -1
- classiq/interface/generator/generated_circuit_data.py +4 -2
- classiq/interface/generator/quantum_program.py +18 -1
- classiq/interface/generator/types/enum_declaration.py +33 -2
- classiq/interface/model/classical_if.py +2 -2
- classiq/interface/model/control.py +2 -2
- classiq/interface/model/invert.py +2 -2
- classiq/interface/model/power.py +2 -2
- classiq/interface/model/quantum_function_call.py +4 -0
- classiq/interface/model/repeat.py +2 -2
- classiq/interface/model/statement_block.py +1 -1
- classiq/interface/model/within_apply_operation.py +2 -2
- classiq/model_expansions/interpreters/generative_interpreter.py +78 -18
- classiq/model_expansions/quantum_operations/allocate.py +3 -1
- classiq/model_expansions/quantum_operations/assignment_result_processor.py +52 -0
- classiq/model_expansions/quantum_operations/bind.py +2 -1
- classiq/model_expansions/quantum_operations/block_evaluator.py +76 -0
- classiq/model_expansions/quantum_operations/classicalif.py +5 -4
- classiq/model_expansions/quantum_operations/composite_emitter.py +27 -0
- classiq/model_expansions/quantum_operations/emitter.py +16 -2
- classiq/model_expansions/quantum_operations/expression_evaluator.py +33 -0
- classiq/model_expansions/quantum_operations/handle_evaluator.py +28 -0
- classiq/model_expansions/quantum_operations/quantum_function_call.py +3 -2
- classiq/model_expansions/quantum_operations/repeat.py +2 -1
- classiq/model_expansions/quantum_operations/variable_decleration.py +2 -1
- classiq/model_expansions/sympy_conversion/expression_to_sympy.py +1 -1
- classiq/open_library/functions/__init__.py +1 -2
- classiq/open_library/functions/amplitude_amplification.py +8 -5
- classiq/open_library/functions/discrete_sine_cosine_transform.py +16 -13
- classiq/open_library/functions/grover.py +6 -10
- classiq/open_library/functions/modular_exponentiation.py +7 -13
- classiq/open_library/functions/state_preparation.py +16 -17
- classiq/open_library/functions/swap_test.py +1 -1
- classiq/open_library/functions/utility_functions.py +10 -2
- classiq/qmod/builtins/functions/chemistry.py +6 -38
- classiq/qmod/quantum_expandable.py +30 -6
- classiq/qmod/semantics/validation/types_validation.py +1 -1
- classiq/qmod/symbolic.py +2 -1
- classiq/qmod/utilities.py +2 -1
- classiq/qmod/write_qmod.py +10 -7
- classiq/synthesis.py +20 -7
- {classiq-0.67.0.dist-info → classiq-0.68.0.dist-info}/METADATA +1 -1
- {classiq-0.67.0.dist-info → classiq-0.68.0.dist-info}/RECORD +55 -51
- classiq/model_expansions/quantum_operations/shallow_emitter.py +0 -166
- {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
|
7
|
-
classiq/_internals/async_utils.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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
|
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=
|
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=
|
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=
|
381
|
-
classiq/interface/model/statement_block.py,sha256=
|
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=
|
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=
|
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=
|
419
|
-
classiq/model_expansions/quantum_operations/
|
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
|
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=
|
424
|
-
classiq/model_expansions/quantum_operations/
|
425
|
-
classiq/model_expansions/quantum_operations/
|
426
|
-
classiq/model_expansions/quantum_operations/
|
427
|
-
classiq/model_expansions/quantum_operations/
|
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=
|
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=
|
446
|
-
classiq/open_library/functions/amplitude_amplification.py,sha256=
|
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=
|
449
|
-
classiq/open_library/functions/grover.py,sha256=
|
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
|
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=
|
458
|
-
classiq/open_library/functions/swap_test.py,sha256=
|
459
|
-
classiq/open_library/functions/utility_functions.py,sha256=
|
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=
|
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=
|
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=
|
518
|
-
classiq/qmod/symbolic.py,sha256=
|
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=
|
523
|
-
classiq/qmod/write_qmod.py,sha256=
|
524
|
-
classiq/synthesis.py,sha256=
|
525
|
-
classiq-0.
|
526
|
-
classiq-0.
|
527
|
-
classiq-0.
|
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]
|
File without changes
|