classiq 0.51.0__py3-none-any.whl → 0.51.1__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.
@@ -3,5 +3,5 @@ from packaging.version import Version
3
3
  # This file was generated automatically
4
4
  # Please don't track in version control (DONTTRACK)
5
5
 
6
- SEMVER_VERSION = '0.51.0'
6
+ SEMVER_VERSION = '0.51.1'
7
7
  VERSION = str(Version(SEMVER_VERSION))
@@ -29,10 +29,10 @@ class QmodQNumProxy(QmodQScalarProxy):
29
29
  self, handle: HandleBinding, size: int, fraction_digits: int, is_signed: bool
30
30
  ) -> None:
31
31
  super().__init__(handle, size)
32
- if fraction_digits + is_signed > size:
32
+ if fraction_digits > size:
33
33
  raise ClassiqValueError(
34
- f"{'Signed' if is_signed else 'Unsigned'} quantum numeric of size "
35
- f"{size} cannot have {fraction_digits} fraction digits"
34
+ f"Quantum numeric of size {size} cannot have {fraction_digits} "
35
+ f"fraction digits"
36
36
  )
37
37
  self._fraction_digits = fraction_digits
38
38
  self._is_signed = is_signed
@@ -230,10 +230,7 @@ def _pad_with_sign_bit(kind: str, var: QuantumSymbol, size_diff: int) -> Tuple[
230
230
  if not quantum_type.sign_value or size_diff >= 0:
231
231
  return var, [], [], [], []
232
232
 
233
- significand_var, sign_var, sign_split_bind = _split_sign(kind, var)
234
233
  padding_var, padding_allocation = _allocate_padding(kind, size_diff)
235
- padding_init_ops = _init_padding(sign_var, padding_var, size_diff)
236
-
237
234
  padded_var = QuantumSymbol(
238
235
  handle=HandleBinding(name=f"padded_{kind}"),
239
236
  quantum_type=QuantumNumeric(
@@ -242,17 +239,42 @@ def _pad_with_sign_bit(kind: str, var: QuantumSymbol, size_diff: int) -> Tuple[
242
239
  fraction_digits=Expression(expr="0"),
243
240
  ),
244
241
  )
242
+ var_decls = [
243
+ VariableDeclarationStatement(
244
+ name=var.handle.name,
245
+ quantum_type=var.quantum_type,
246
+ )
247
+ for var in (padding_var, padded_var)
248
+ ]
249
+
250
+ if quantum_type.size_in_bits == 1: # qnum<1, SIGNED, ?>
251
+ padding_init_ops = _init_padding(var, padding_var, size_diff)
252
+ padding_rebind = BindOperation(
253
+ in_handles=[var.handle, padding_var.handle],
254
+ out_handles=[padded_var.handle],
255
+ )
256
+ return (
257
+ padded_var,
258
+ var_decls,
259
+ [padding_allocation],
260
+ padding_init_ops,
261
+ [padding_rebind],
262
+ )
263
+
264
+ significand_var, sign_var, sign_split_bind = _split_sign(kind, var)
265
+ padding_init_ops = _init_padding(sign_var, padding_var, size_diff)
266
+
245
267
  padding_rebind = BindOperation(
246
268
  in_handles=[significand_var.handle, sign_var.handle, padding_var.handle],
247
269
  out_handles=[padded_var.handle],
248
270
  )
249
271
 
250
- var_decls = [
272
+ var_decls += [
251
273
  VariableDeclarationStatement(
252
274
  name=var.handle.name,
253
275
  quantum_type=var.quantum_type,
254
276
  )
255
- for var in (significand_var, sign_var, padding_var, padded_var)
277
+ for var in (significand_var, sign_var)
256
278
  ]
257
279
 
258
280
  return (
@@ -106,7 +106,7 @@ def _expand_generative_model(
106
106
  preferences,
107
107
  classical_execution_function,
108
108
  )
109
- generative_functions = _get_generative_functions(gen_main)
109
+ generative_functions = _get_generative_functions(gen_main, preferences)
110
110
  model.functions = generative_functions
111
111
  model.types = list(QMODULE.type_decls.values())
112
112
  model.enums = list(QMODULE.enum_decls.values())
@@ -114,20 +114,25 @@ def _expand_generative_model(
114
114
  return model
115
115
 
116
116
 
117
- def _get_generative_functions(gen_main: QFunc) -> List[NativeFunctionDefinition]:
117
+ def _get_generative_functions(
118
+ gen_main: QFunc, preferences: Optional[Preferences]
119
+ ) -> List[NativeFunctionDefinition]:
118
120
  # The Interpreter accepts a model and a list of generative functions.
119
121
  # Since the main function is generative, it can only be expanded using the
120
122
  # Interpreter.
121
123
  # To solve this deadlock, we create a wrapper model
122
124
  # `qfunc main(...) { _gen_main(...); }` and rename `main` to `_gen_main` before
123
125
  # passing them to the Interpreter.
124
- gen_model = _get_wrapper_main(gen_main)
126
+ gen_model = _get_wrapper_main(gen_main, preferences)
125
127
  gen_functions = _get_all_model_functions_as_generative_functions()
126
128
  functions_dict = _interpret_generative_model(gen_model, gen_functions)
127
129
  return list(functions_dict.values())
128
130
 
129
131
 
130
- def _get_wrapper_main(gen_main: QFunc) -> Model:
132
+ def _get_wrapper_main(gen_main: QFunc, preferences: Optional[Preferences]) -> Model:
133
+ extra_args = {}
134
+ if preferences is not None:
135
+ extra_args["preferences"] = preferences
131
136
  return Model(
132
137
  functions=[
133
138
  NativeFunctionDefinition(
@@ -145,6 +150,7 @@ def _get_wrapper_main(gen_main: QFunc) -> Model:
145
150
  ],
146
151
  ),
147
152
  ],
153
+ **extra_args,
148
154
  )
149
155
 
150
156
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: classiq
3
- Version: 0.51.0
3
+ Version: 0.51.1
4
4
  Summary: Classiq's Python SDK for quantum computing
5
5
  Home-page: https://classiq.io
6
6
  License: Proprietary
@@ -93,7 +93,7 @@ classiq/execution/jobs.py,sha256=t7Wdegpi6lylthg23a98rSmoZ8xXNGfz--efHYw39JY,956
93
93
  classiq/execution/qnn.py,sha256=qsOA2mD8Ne_4VwvyGPfuHVDTzyxVnDHwE2gfoaOMsf8,2339
94
94
  classiq/executor.py,sha256=jKD5O_tJpL2NMTC_N0NEuPJEmKZIaqsTpQrgZ88sleg,2594
95
95
  classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
96
- classiq/interface/_version.py,sha256=QdnvwzI3ZZ950pqsQeD-2OQudc7rtsA7r_qNK3vRu2c,197
96
+ classiq/interface/_version.py,sha256=gsOl-z2ZImE1-e-rSOkR9cpHmHsBf2DNIZ0T3Wtznh8,197
97
97
  classiq/interface/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  classiq/interface/analyzer/analysis_params.py,sha256=043hfS-I3Ec6tkcniKMQQUiRyEC7zlNhntTBpZQB8hw,3725
99
99
  classiq/interface/analyzer/cytoscape_graph.py,sha256=_2GviubgrDMAbF57PTDMhS9W0mTCLYWdyu0HndDPh54,2116
@@ -226,7 +226,7 @@ classiq/interface/generator/expressions/expression_types.py,sha256=BcqLJ_v0Rwm7g
226
226
  classiq/interface/generator/expressions/handle_identifier.py,sha256=Vf1EsfzkW3tBk9S6QOLPn5yuLW1EChQ4Ja6OpLWPLFw,93
227
227
  classiq/interface/generator/expressions/non_symbolic_expr.py,sha256=9JzU1y6oYmDjZyZLjDQNA81X3p1Z7CGzweN6WeFAcY8,4036
228
228
  classiq/interface/generator/expressions/qmod_qarray_proxy.py,sha256=0PBTDnTl_3YqKOKnzHcj5MRp6wDCPI4ZgWw0rrnGgtM,3542
229
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py,sha256=YEpgw1eDV8-zFcxawTrE5FBanCJf5_r6HStW3rC91bk,1778
229
+ classiq/interface/generator/expressions/qmod_qscalar_proxy.py,sha256=XL3tJZkqO2YuRm9Hyo-ehFqIe9cd2AM-Lx_X__NXasQ,1726
230
230
  classiq/interface/generator/expressions/qmod_qstruct_proxy.py,sha256=7mUER-9XBlu2Zu8MsfTFzVWh-ieBc3_D-MY0L6OZ2bk,1114
231
231
  classiq/interface/generator/expressions/qmod_sized_proxy.py,sha256=mYqQfqvqB9vthhhWfbT3R-vp26xwJEDR28x1MfRSx2A,740
232
232
  classiq/interface/generator/expressions/qmod_struct_instance.py,sha256=oMXVjU6243RmykMD0EU4Jnjup4pXveeuXv2UFchZTpM,1067
@@ -411,7 +411,7 @@ classiq/model_expansions/quantum_operations/classicalif.py,sha256=6SFumWVIWCTNQs
411
411
  classiq/model_expansions/quantum_operations/control.py,sha256=SibNNK8gwzBMojwmXDg--SXbqhn3PJmIB2y0sK-7rJA,10151
412
412
  classiq/model_expansions/quantum_operations/emitter.py,sha256=z3axE2OfTjIxp6sevyo2VGsN1d5Elx5a8721YgGCpOM,10899
413
413
  classiq/model_expansions/quantum_operations/expression_operation.py,sha256=q2EaNec3kvTw2xDVGrd36p_rHiNMaWzkR0qFC55sJDY,8182
414
- classiq/model_expansions/quantum_operations/inplace_binary_operation.py,sha256=OoEBjjE9sXoOuV3h7p29UN6DgGywcXPVHntSLHXAUp4,11142
414
+ classiq/model_expansions/quantum_operations/inplace_binary_operation.py,sha256=6crgrrrUW_dwnNZsiMpHap9V-0FZiHw6vHNrscMja94,11765
415
415
  classiq/model_expansions/quantum_operations/invert.py,sha256=iR6ZpTyntchWb5kJFFMCC6rkBURbueJO42H7-8ljbKw,1661
416
416
  classiq/model_expansions/quantum_operations/phase.py,sha256=W3qHfxs9S25yE2Ofgy9NwO5t9og6DxhqSQW8w1ptm1w,7337
417
417
  classiq/model_expansions/quantum_operations/power.py,sha256=89FEo5xJkOxCP7L7Jy9MJatRbbzjVVR0oc8Q7aBzF8Q,2661
@@ -464,7 +464,7 @@ classiq/qmod/builtins/structs.py,sha256=pdjNKFAhxLNzVdz4bhONO4PwvfI_W7Z7Skjgqt47
464
464
  classiq/qmod/cfunc.py,sha256=quwJdgYRgqI2C13SRrRunLi-Kuf7nCAk2-O2B46QtoY,1093
465
465
  classiq/qmod/classical_function.py,sha256=DuPzfK--_6pR6JcuvkWoNx3jRHkRVskqyTOi4qbejr8,1221
466
466
  classiq/qmod/cparam.py,sha256=wai8PyfS6QCJ8_WLck2nRZrtuEXYg1cogj4CQ_EZKP4,1182
467
- classiq/qmod/create_model_function.py,sha256=zAOz1T8_o6bzlBaBF0Q1AWkbzDr86ui3WXhaW_S3lYU,7275
467
+ classiq/qmod/create_model_function.py,sha256=A3IhmgCv4pFhn2tiaQ2HmFMl3zzeZQKOR2Qy5wnSQHs,7501
468
468
  classiq/qmod/declaration_inferrer.py,sha256=4GEh_qzwqR2Rj_B-oBAtENCPDSq92PKcahc7I4vghG0,7003
469
469
  classiq/qmod/expression_query.py,sha256=EkZPG-iJGcar2zqAwji0QtPKjapO6RL3nz8YEuhxyGg,1642
470
470
  classiq/qmod/generative.py,sha256=--557jt22gVKJROwcSA7AzQBdgNl9zMXGEfRJVI6W1k,1561
@@ -499,6 +499,6 @@ classiq/qmod/type_attribute_remover.py,sha256=dN9dcsmFQI1UXz_DllGKl2BP4XkyvGdNk8
499
499
  classiq/qmod/utilities.py,sha256=z_VnIRmOYTWjJp2UlOcWK0rQRtMqysmP_Gr6WYY_nak,2734
500
500
  classiq/qmod/write_qmod.py,sha256=SO7hdBdO31lTzyeaJ-Htyma-aJmrbBNtABNEB2llI4Q,1818
501
501
  classiq/synthesis.py,sha256=egu5iUXeED5Lt0sDDQZvybUNVSYckNia5HbqRtoS11A,8035
502
- classiq-0.51.0.dist-info/METADATA,sha256=F2DecgDdRlMbWpkFWPFgp1fnpKZBfAVb7RfvxXxS9iE,3458
503
- classiq-0.51.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
504
- classiq-0.51.0.dist-info/RECORD,,
502
+ classiq-0.51.1.dist-info/METADATA,sha256=cirVNZ9qM7PL8ljeUkomYY6xR6Q5OF6EODmpDZUVxic,3458
503
+ classiq-0.51.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
504
+ classiq-0.51.1.dist-info/RECORD,,