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.
Files changed (56) hide show
  1. classiq/interface/_version.py +1 -1
  2. classiq/interface/debug_info/debug_info.py +11 -0
  3. classiq/interface/executor/result.py +0 -3
  4. classiq/interface/generator/functions/builtins/internal_operators.py +9 -1
  5. classiq/interface/generator/generated_circuit_data.py +0 -1
  6. classiq/interface/generator/model/preferences/preferences.py +4 -0
  7. classiq/interface/generator/types/compilation_metadata.py +5 -0
  8. classiq/interface/generator/visitor.py +13 -1
  9. classiq/interface/ide/visual_model.py +5 -1
  10. classiq/interface/interface_version.py +1 -1
  11. classiq/interface/model/control.py +22 -1
  12. classiq/interface/model/handle_binding.py +28 -0
  13. classiq/interface/model/model.py +4 -0
  14. classiq/interface/model/native_function_definition.py +1 -1
  15. classiq/interface/model/quantum_expressions/arithmetic_operation.py +2 -26
  16. classiq/interface/model/quantum_statement.py +6 -0
  17. classiq/model_expansions/capturing/mangling_utils.py +22 -0
  18. classiq/model_expansions/capturing/propagated_var_stack.py +36 -25
  19. classiq/model_expansions/closure.py +77 -12
  20. classiq/model_expansions/function_builder.py +9 -10
  21. classiq/model_expansions/generative_functions.py +2 -2
  22. classiq/model_expansions/interpreter.py +29 -26
  23. classiq/model_expansions/quantum_operations/control.py +114 -29
  24. classiq/model_expansions/quantum_operations/emitter.py +37 -11
  25. classiq/model_expansions/quantum_operations/expression_operation.py +80 -18
  26. classiq/model_expansions/quantum_operations/power.py +5 -0
  27. classiq/model_expansions/quantum_operations/quantum_assignment_operation.py +7 -37
  28. classiq/model_expansions/quantum_operations/quantum_function_call.py +2 -32
  29. classiq/model_expansions/quantum_operations/repeat.py +5 -0
  30. classiq/model_expansions/quantum_operations/within_apply.py +0 -16
  31. classiq/model_expansions/scope_initialization.py +2 -3
  32. classiq/qmod/builtins/functions/arithmetic.py +0 -2
  33. classiq/qmod/builtins/functions/discrete_sine_cosine_transform.py +0 -12
  34. classiq/qmod/builtins/functions/exponentiation.py +0 -6
  35. classiq/qmod/builtins/functions/grover.py +0 -17
  36. classiq/qmod/builtins/functions/linear_pauli_rotation.py +0 -5
  37. classiq/qmod/builtins/functions/modular_exponentiation.py +0 -3
  38. classiq/qmod/builtins/functions/qaoa_penalty.py +0 -8
  39. classiq/qmod/builtins/functions/qft_functions.py +0 -3
  40. classiq/qmod/builtins/functions/qpe.py +0 -6
  41. classiq/qmod/builtins/functions/qsvt.py +0 -12
  42. classiq/qmod/builtins/functions/standard_gates.py +0 -88
  43. classiq/qmod/builtins/functions/state_preparation.py +7 -15
  44. classiq/qmod/builtins/functions/swap_test.py +0 -3
  45. classiq/qmod/builtins/operations.py +152 -17
  46. classiq/qmod/create_model_function.py +10 -12
  47. classiq/qmod/model_state_container.py +5 -1
  48. classiq/qmod/native/pretty_printer.py +6 -1
  49. classiq/qmod/pretty_print/pretty_printer.py +25 -11
  50. classiq/qmod/qmod_constant.py +31 -3
  51. classiq/qmod/quantum_function.py +25 -19
  52. classiq/qmod/synthesize_separately.py +1 -2
  53. {classiq-0.54.0.dist-info → classiq-0.56.0.dist-info}/METADATA +2 -3
  54. {classiq-0.54.0.dist-info → classiq-0.56.0.dist-info}/RECORD +55 -55
  55. classiq/model_expansions/call_to_model_converter.py +0 -190
  56. {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=GOZjWSjFGSXW_6wDV6ETBegV50P3Su2bLgq44xs0ZtI,197
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=hoXTvlF-P2UKcrrqkBZkGkHgDPCVBxedhKQ6Jf3J00o,2956
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=3PZpcgGqyrai2UctPrkh3lH018NHPRmq7LP0f6Dlk44,12304
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=492JSUgrWt2st06o7ZVOeI2JLHkw1C6Jb5FO-uKkJg4,265
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=so-DPvzU6quBaJ6L_9gMHWswT3VpM_JIXKGeCtjkCh0,6559
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=_YZef3wCfHgfUD2fEa_2V7GV4i2uu3NdkXx9HxcBzfs,10976
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=s99aqB65hY7tnIV8agFtNev299Pggop6hlQe00NHzas,2854
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=H4XogltFlO6JMLGM1NOuy9qe9hhmp3MdTc6SAunMcA8,3047
350
- classiq/interface/interface_version.py,sha256=hXglUKVBx98E8bY6pZCVyjOHpoouaIe8o1uvb1RQXyY,24
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=paUt8gOYIGQXoDvfPkSl-WfHUMnpKkkXG2064E5dhB0,585
357
- classiq/interface/model/handle_binding.py,sha256=QHH4wCb0He3k5rOjOR7M2IMh2CjBRq26sRD1BeWnE6A,7557
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=RsthVi_nsD2RqdXdsjH7JG71Q5gV2JmhHzm0JDa8dNc,6627
361
- classiq/interface/model/native_function_definition.py,sha256=K_hwgBb2io81ycHKP7J3si3B4dpJh_K_9Eb7MGI68UI,986
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=arPbsDy7hXlfrmTwH-9-5Dc4vhn-SgOZFXv8RPQT0zo,3560
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=uvIyXmVABQexsNRl_UyDC4BuT8FXBGXySb8hDaANTVk,2627
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=3pZdaebPOFQrD-psaZLdkMmRyZUvhWBxbwg_Z3IrvgI,501
396
- classiq/model_expansions/capturing/propagated_var_stack.py,sha256=ZvNpSz7jPnKaRXimebZ8esOOmcBohv8YJFfJRjDaGVA,7063
397
- classiq/model_expansions/closure.py,sha256=7tXqEwTsaXyvjLZ_g9hPIBuiYKheL0hojejnj5f2MTw,6322
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=8m2lujt-ZKBXFtWa8ZeieNEZChvqNGe5SL-OvnA9B0k,6897
410
- classiq/model_expansions/generative_functions.py,sha256=_O7PvhULxSJ7KWzFBcbVh9kKytcz0prvW78UDkAmzvU,8445
411
- classiq/model_expansions/interpreter.py,sha256=JJJX0Kg6xZmcIKzOz2BemtjIMPSpyiVIv38wsJC0N08,15261
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=eQs78aPKf4zjdbMDtWP6SzA8bLvsQffACwgUpDpwIOM,9957
417
- classiq/model_expansions/quantum_operations/emitter.py,sha256=IyemGeYa1AVJtWKeK6gYfZUTKo4l9amQ6ea5oqX5N0M,11808
418
- classiq/model_expansions/quantum_operations/expression_operation.py,sha256=B0HLVu3hy_lOAAaPzDdCBAqCrtLhcpRtf4EKL-mkc9k,7809
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=7ICUvE4_mXqiCdRNi0fbxsfs_MpNFLUk4d2NF2plZXQ,2667
423
- classiq/model_expansions/quantum_operations/quantum_assignment_operation.py,sha256=7ZcUrtFILsAexZNSnjzmqEywgUnrJ6kxUQMr2FnHGlU,10466
424
- classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=g-zOH9O-kOVtiTn7ejOotlcrw8ocriLHD94-2lo7I5U,2282
425
- classiq/model_expansions/quantum_operations/repeat.py,sha256=nnqNQHCMJLCesMrc2ko3ficFBpWr9j2ied8TIgLfnZ0,2035
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=XxKiXBKGuorma04FiRwWN_q_kPO1qHSSioispEzaQgg,2328
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=T4tte0bYVWaDefiH73XWvZRFpnFI6Y2dFEc9DY-95Jo,5736
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=hIOBTXfoB0T779L4fW6ien6cWiPqRBwumQG1DLJe8Xw,2472
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=mBtp6by6Qx_-clCLxbfGvmcaGns9MD7mp7r3v9t8sFk,5325
452
- classiq/qmod/builtins/functions/exponentiation.py,sha256=poR2fTvaBtVQiNvQJ7sLNzm7akp7GGuMW3vsPee3TfE,4477
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=5RotwUY-8OeBKmZVDX8JhV-2FT7k-gE79cMpC_G9L7s,5355
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=UuL2neIIW8gkwOEOs3VMvNdG-1oxzbsv4q-k_7ieiiQ,2868
457
- classiq/qmod/builtins/functions/modular_exponentiation.py,sha256=GpNsZwWLrL43a0iUG0fquM2x4mZq4z4wWEdLM75V-fQ,6936
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=afjGwj5BaSChW9OfxRpPkleqprFZwqt-uyqL64KD3ZY,4797
460
- classiq/qmod/builtins/functions/qft_functions.py,sha256=RwmHA5hhXEAOc1XOIq47UfS2BoqQWnmgQHUOxtln5LA,1669
461
- classiq/qmod/builtins/functions/qpe.py,sha256=JZtKuMK32atwwgMpWacnfKYx1aqxq5gCe4oNkWDp4WY,2688
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=N3tbTQEqiSMtbZDoHnJGX5gKiZIkSwECxgNF2qsTCmo,7945
464
- classiq/qmod/builtins/functions/standard_gates.py,sha256=heiLoB9rY9vldifZ93xi7qVg_52EyBqbEr54P1nLDh8,22295
465
- classiq/qmod/builtins/functions/state_preparation.py,sha256=UMCwqXgelnfoVIfq0YDWOMx8gaDg_twUeAGB64xewY0,18279
466
- classiq/qmod/builtins/functions/swap_test.py,sha256=a6Vuby3Yn_bi7D5RLW-1SkWaqMim-UNFoRq39Zeu15g,1277
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=WcA4mWbpKUU7IlLwtwxTg96t5gdbEfv6NzH1OS26duY,10803
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=wGYCG8sSzO3dJf6WNc-N8K3nBM3kcEyYc0ZvXfEx4QQ,7932
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=_MQKcjqebPsy65k57T7y9vdGLRdpnl8tAuCX4TltQoo,681
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=wzBJjkpEVgJpf-pZLmIMH3_w2oESswQ4NSh4Z1zON9U,15336
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=kiJHpr_u-03Qx5BLMQ8MfrN8YTFVkXWtzIe2YLFjJWs,21483
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=ZGYhlN4sN4opm91LGFxN7eShcj5mTlDH3DJXpazW-Zk,3857
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=umVQdhJaF1K27qYF6H6EWIaAWWVnoddVHrS8Eig9L6A,8302
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=ykoQBEUd3TmngcG-g4kbdv04RCyvVLTK2c9qdRu-6lA,731
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.54.0.dist-info/METADATA,sha256=7o2ghae-AjSxfEsM21_v-A0g8mdjyral_yQ_GmU-T5w,3508
512
- classiq-0.54.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
513
- classiq-0.54.0.dist-info/RECORD,,
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
- )