luna-quantum 1.1.0__cp312-cp312-win_amd64.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 (276) hide show
  1. luna_quantum/__init__.py +139 -0
  2. luna_quantum/__init__.pyi +98 -0
  3. luna_quantum/_core.cp312-win_amd64.pyd +0 -0
  4. luna_quantum/_core.pyi +4286 -0
  5. luna_quantum/_utility.py +148 -0
  6. luna_quantum/_utility.pyi +20 -0
  7. luna_quantum/algorithms/__init__.py +1 -0
  8. luna_quantum/aqm_overwrites/__init__.py +3 -0
  9. luna_quantum/aqm_overwrites/model.py +184 -0
  10. luna_quantum/backends/__init__.py +1 -0
  11. luna_quantum/client/__init__.py +0 -0
  12. luna_quantum/client/controllers/__init__.py +4 -0
  13. luna_quantum/client/controllers/luna_http_client.py +37 -0
  14. luna_quantum/client/controllers/luna_platform_client.py +256 -0
  15. luna_quantum/client/controllers/luna_q.py +67 -0
  16. luna_quantum/client/controllers/luna_solve.py +129 -0
  17. luna_quantum/client/error/__init__.py +0 -0
  18. luna_quantum/client/error/luna_api_key_invalid_error.py +10 -0
  19. luna_quantum/client/error/luna_api_key_missing_error.py +10 -0
  20. luna_quantum/client/error/luna_error.py +2 -0
  21. luna_quantum/client/error/luna_server_error.py +20 -0
  22. luna_quantum/client/error/timeout_error.py +12 -0
  23. luna_quantum/client/error/transformation_error.py +18 -0
  24. luna_quantum/client/error/utils/__init__.py +0 -0
  25. luna_quantum/client/error/utils/http_error_utils.py +112 -0
  26. luna_quantum/client/interfaces/__init__.py +4 -0
  27. luna_quantum/client/interfaces/clients/__init__.py +25 -0
  28. luna_quantum/client/interfaces/clients/circuit_rest_client_i.py +68 -0
  29. luna_quantum/client/interfaces/clients/info_rest_client_i.py +53 -0
  30. luna_quantum/client/interfaces/clients/model_rest_client_i.py +139 -0
  31. luna_quantum/client/interfaces/clients/qpu_token_rest_client_i.py +364 -0
  32. luna_quantum/client/interfaces/clients/rest_client_i.py +21 -0
  33. luna_quantum/client/interfaces/clients/solve_job_rest_client_i.py +201 -0
  34. luna_quantum/client/interfaces/clients/users_rest_client_i.py +29 -0
  35. luna_quantum/client/interfaces/services/__init__.py +0 -0
  36. luna_quantum/client/interfaces/services/luna_q_i.py +34 -0
  37. luna_quantum/client/interfaces/services/luna_solve_i.py +72 -0
  38. luna_quantum/client/interfaces/services/service_i.py +56 -0
  39. luna_quantum/client/rest_client/__init__.py +15 -0
  40. luna_quantum/client/rest_client/circuit_rest_client.py +107 -0
  41. luna_quantum/client/rest_client/info_rest_client.py +74 -0
  42. luna_quantum/client/rest_client/model_rest_client.py +216 -0
  43. luna_quantum/client/rest_client/qpu_token_rest_client.py +508 -0
  44. luna_quantum/client/rest_client/solve_job_rest_client.py +286 -0
  45. luna_quantum/client/rest_client/users_rest_client.py +35 -0
  46. luna_quantum/client/schemas/__init__.py +26 -0
  47. luna_quantum/client/schemas/circuit.py +48 -0
  48. luna_quantum/client/schemas/create/__init__.py +15 -0
  49. luna_quantum/client/schemas/create/circuit.py +30 -0
  50. luna_quantum/client/schemas/create/optimization.py +39 -0
  51. luna_quantum/client/schemas/create/qpu_token.py +22 -0
  52. luna_quantum/client/schemas/create/qpu_token_time_quota.py +35 -0
  53. luna_quantum/client/schemas/create/qpu_token_time_quota_update.py +24 -0
  54. luna_quantum/client/schemas/create/qubo.py +19 -0
  55. luna_quantum/client/schemas/create/solve_job_create.py +43 -0
  56. luna_quantum/client/schemas/enums/__init__.py +0 -0
  57. luna_quantum/client/schemas/enums/call_style.py +13 -0
  58. luna_quantum/client/schemas/enums/circuit.py +42 -0
  59. luna_quantum/client/schemas/enums/model_format.py +11 -0
  60. luna_quantum/client/schemas/enums/problem.py +50 -0
  61. luna_quantum/client/schemas/enums/qpu_token_type.py +20 -0
  62. luna_quantum/client/schemas/enums/sense.py +8 -0
  63. luna_quantum/client/schemas/enums/status.py +40 -0
  64. luna_quantum/client/schemas/enums/timeframe.py +11 -0
  65. luna_quantum/client/schemas/error_message.py +14 -0
  66. luna_quantum/client/schemas/model_metadata.py +35 -0
  67. luna_quantum/client/schemas/qpu_token/__init__.py +0 -0
  68. luna_quantum/client/schemas/qpu_token/qpu_token.py +154 -0
  69. luna_quantum/client/schemas/qpu_token/qpu_token_source.py +19 -0
  70. luna_quantum/client/schemas/qpu_token/qpu_token_time_quota.py +30 -0
  71. luna_quantum/client/schemas/qpu_token/token_provider.py +132 -0
  72. luna_quantum/client/schemas/representation.py +19 -0
  73. luna_quantum/client/schemas/solution.py +106 -0
  74. luna_quantum/client/schemas/solve_job.py +50 -0
  75. luna_quantum/client/schemas/solver_info.py +11 -0
  76. luna_quantum/client/schemas/user.py +11 -0
  77. luna_quantum/client/schemas/wrappers/__init__.py +5 -0
  78. luna_quantum/client/schemas/wrappers/datetime_wrapper.py +32 -0
  79. luna_quantum/client/utils/__init__.py +0 -0
  80. luna_quantum/client/utils/qpu_token_utils.py +147 -0
  81. luna_quantum/config.py +11 -0
  82. luna_quantum/decorators.py +248 -0
  83. luna_quantum/errors.py +34 -0
  84. luna_quantum/errors.pyi +287 -0
  85. luna_quantum/exceptions/__init__.py +0 -0
  86. luna_quantum/exceptions/base_luna_quantum_error.py +2 -0
  87. luna_quantum/exceptions/luna_quantum_call_type_error.py +9 -0
  88. luna_quantum/exceptions/patch_class_field_exists_error.py +10 -0
  89. luna_quantum/factories/__init__.py +4 -0
  90. luna_quantum/factories/luna_solve_client_factory.py +100 -0
  91. luna_quantum/factories/usecase_factory.py +489 -0
  92. luna_quantum/py.typed +0 -0
  93. luna_quantum/solve/__init__.py +13 -0
  94. luna_quantum/solve/default_token.py +304 -0
  95. luna_quantum/solve/domain/__init__.py +0 -0
  96. luna_quantum/solve/domain/abstract/__init__.py +4 -0
  97. luna_quantum/solve/domain/abstract/luna_algorithm.py +205 -0
  98. luna_quantum/solve/domain/abstract/qpu_token_backend.py +34 -0
  99. luna_quantum/solve/domain/model_metadata.py +56 -0
  100. luna_quantum/solve/domain/solve_job.py +230 -0
  101. luna_quantum/solve/errors/__init__.py +0 -0
  102. luna_quantum/solve/errors/incompatible_backend_error.py +15 -0
  103. luna_quantum/solve/errors/model_metadata_missing_error.py +11 -0
  104. luna_quantum/solve/errors/solve_base_error.py +5 -0
  105. luna_quantum/solve/errors/token_missing_error.py +11 -0
  106. luna_quantum/solve/interfaces/__init__.py +0 -0
  107. luna_quantum/solve/interfaces/algorithm_i.py +49 -0
  108. luna_quantum/solve/interfaces/backend_i.py +28 -0
  109. luna_quantum/solve/interfaces/usecases/__init__.py +59 -0
  110. luna_quantum/solve/interfaces/usecases/model_delete_usecase_i.py +27 -0
  111. luna_quantum/solve/interfaces/usecases/model_fetch_metadata_usecase_i.py +33 -0
  112. luna_quantum/solve/interfaces/usecases/model_get_solutions_usecase_i.py +33 -0
  113. luna_quantum/solve/interfaces/usecases/model_get_solve_jobs_usecase_i.py +33 -0
  114. luna_quantum/solve/interfaces/usecases/model_load_by_id_usecase_i.py +32 -0
  115. luna_quantum/solve/interfaces/usecases/model_load_by_metadata_usecase_i.py +37 -0
  116. luna_quantum/solve/interfaces/usecases/model_load_metadata_by_hash_usecase_i.py +38 -0
  117. luna_quantum/solve/interfaces/usecases/model_save_usecase_i.py +36 -0
  118. luna_quantum/solve/interfaces/usecases/solve_job_cancel_usecase_i.py +33 -0
  119. luna_quantum/solve/interfaces/usecases/solve_job_create_usecase_i.py +44 -0
  120. luna_quantum/solve/interfaces/usecases/solve_job_delete_usecase_i.py +32 -0
  121. luna_quantum/solve/interfaces/usecases/solve_job_fetch_updates_usecase_i.py +38 -0
  122. luna_quantum/solve/interfaces/usecases/solve_job_get_by_id_usecase_i.py +27 -0
  123. luna_quantum/solve/interfaces/usecases/solve_job_get_result_usecase_i.py +63 -0
  124. luna_quantum/solve/parameters/__init__.py +0 -0
  125. luna_quantum/solve/parameters/algorithms/__init__.py +51 -0
  126. luna_quantum/solve/parameters/algorithms/base_params/__init__.py +24 -0
  127. luna_quantum/solve/parameters/algorithms/base_params/decomposer.py +57 -0
  128. luna_quantum/solve/parameters/algorithms/base_params/qaoa_circuit_params.py +95 -0
  129. luna_quantum/solve/parameters/algorithms/base_params/quantum_annealing_params.py +79 -0
  130. luna_quantum/solve/parameters/algorithms/base_params/scipy_optimizer.py +122 -0
  131. luna_quantum/solve/parameters/algorithms/base_params/simulated_annealing_params.py +106 -0
  132. luna_quantum/solve/parameters/algorithms/base_params/tabu_kerberos_params.py +39 -0
  133. luna_quantum/solve/parameters/algorithms/base_params/tabu_search_params.py +129 -0
  134. luna_quantum/solve/parameters/algorithms/flexible_parameter_algorithm.py +59 -0
  135. luna_quantum/solve/parameters/algorithms/genetic_algorithms/__init__.py +4 -0
  136. luna_quantum/solve/parameters/algorithms/genetic_algorithms/qaga.py +131 -0
  137. luna_quantum/solve/parameters/algorithms/genetic_algorithms/saga.py +139 -0
  138. luna_quantum/solve/parameters/algorithms/lq_fda/__init__.py +3 -0
  139. luna_quantum/solve/parameters/algorithms/lq_fda/fujits_da_base.py +85 -0
  140. luna_quantum/solve/parameters/algorithms/lq_fda/fujitsu_da_v3c.py +155 -0
  141. luna_quantum/solve/parameters/algorithms/optimization_solvers/__init__.py +3 -0
  142. luna_quantum/solve/parameters/algorithms/optimization_solvers/scip.py +51 -0
  143. luna_quantum/solve/parameters/algorithms/quantum_annealing/__init__.py +19 -0
  144. luna_quantum/solve/parameters/algorithms/quantum_annealing/kerberos.py +149 -0
  145. luna_quantum/solve/parameters/algorithms/quantum_annealing/leap_hybrid_bqm.py +75 -0
  146. luna_quantum/solve/parameters/algorithms/quantum_annealing/leap_hybrid_cqm.py +75 -0
  147. luna_quantum/solve/parameters/algorithms/quantum_annealing/parallel_tempering_qpu.py +139 -0
  148. luna_quantum/solve/parameters/algorithms/quantum_annealing/population_annealing_qpu.py +109 -0
  149. luna_quantum/solve/parameters/algorithms/quantum_annealing/qbsolv_like_qpu.py +111 -0
  150. luna_quantum/solve/parameters/algorithms/quantum_annealing/quantum_annealing.py +121 -0
  151. luna_quantum/solve/parameters/algorithms/quantum_annealing/repeated_reverse_quantum_annealing.py +174 -0
  152. luna_quantum/solve/parameters/algorithms/quantum_gate/__init__.py +6 -0
  153. luna_quantum/solve/parameters/algorithms/quantum_gate/flex_qaoa/__init__.py +10 -0
  154. luna_quantum/solve/parameters/algorithms/quantum_gate/flexqaoa/__init__.py +29 -0
  155. luna_quantum/solve/parameters/algorithms/quantum_gate/flexqaoa/config.py +58 -0
  156. luna_quantum/solve/parameters/algorithms/quantum_gate/flexqaoa/flexqaoa.py +188 -0
  157. luna_quantum/solve/parameters/algorithms/quantum_gate/flexqaoa/optimizers.py +53 -0
  158. luna_quantum/solve/parameters/algorithms/quantum_gate/flexqaoa/pipeline.py +164 -0
  159. luna_quantum/solve/parameters/algorithms/quantum_gate/qaoa.py +112 -0
  160. luna_quantum/solve/parameters/algorithms/quantum_gate/qaoa_fo.py +69 -0
  161. luna_quantum/solve/parameters/algorithms/quantum_gate/vqe.py +108 -0
  162. luna_quantum/solve/parameters/algorithms/search_algorithms/__init__.py +5 -0
  163. luna_quantum/solve/parameters/algorithms/search_algorithms/dialectic_search.py +136 -0
  164. luna_quantum/solve/parameters/algorithms/search_algorithms/qbsolv_like_tabu_search.py +117 -0
  165. luna_quantum/solve/parameters/algorithms/search_algorithms/tabu_search.py +126 -0
  166. luna_quantum/solve/parameters/algorithms/simulated_annealing/__init__.py +13 -0
  167. luna_quantum/solve/parameters/algorithms/simulated_annealing/parallel_tempering.py +131 -0
  168. luna_quantum/solve/parameters/algorithms/simulated_annealing/population_annealing.py +95 -0
  169. luna_quantum/solve/parameters/algorithms/simulated_annealing/qbsolv_like_simulated_annealing.py +141 -0
  170. luna_quantum/solve/parameters/algorithms/simulated_annealing/repeated_reverse_simulated_annealing.py +172 -0
  171. luna_quantum/solve/parameters/algorithms/simulated_annealing/simulated_annealing.py +126 -0
  172. luna_quantum/solve/parameters/backends/__init__.py +27 -0
  173. luna_quantum/solve/parameters/backends/aqarios.py +17 -0
  174. luna_quantum/solve/parameters/backends/aqarios_gpu.py +17 -0
  175. luna_quantum/solve/parameters/backends/aws/__init__.py +11 -0
  176. luna_quantum/solve/parameters/backends/aws/aws.py +36 -0
  177. luna_quantum/solve/parameters/backends/aws/aws_backend_base.py +74 -0
  178. luna_quantum/solve/parameters/backends/aws/ionq.py +43 -0
  179. luna_quantum/solve/parameters/backends/aws/iqm.py +31 -0
  180. luna_quantum/solve/parameters/backends/aws/rigetti.py +31 -0
  181. luna_quantum/solve/parameters/backends/cudaq/__init__.py +5 -0
  182. luna_quantum/solve/parameters/backends/cudaq/cudaq_base.py +16 -0
  183. luna_quantum/solve/parameters/backends/cudaq/cudaq_cpu.py +30 -0
  184. luna_quantum/solve/parameters/backends/cudaq/cudaq_gpu.py +32 -0
  185. luna_quantum/solve/parameters/backends/dwave.py +17 -0
  186. luna_quantum/solve/parameters/backends/dwave_qpu.py +166 -0
  187. luna_quantum/solve/parameters/backends/fda.py +17 -0
  188. luna_quantum/solve/parameters/backends/ibm.py +138 -0
  189. luna_quantum/solve/parameters/backends/qctrl.py +103 -0
  190. luna_quantum/solve/parameters/backends/zib.py +17 -0
  191. luna_quantum/solve/parameters/constants.py +11 -0
  192. luna_quantum/solve/parameters/errors.py +30 -0
  193. luna_quantum/solve/parameters/mixins/__init__.py +0 -0
  194. luna_quantum/solve/parameters/mixins/fujitsu_common_params_mixin.py +239 -0
  195. luna_quantum/solve/parameters/mixins/fujitsu_v2_mixin.py +70 -0
  196. luna_quantum/solve/parameters/mixins/qbsolv_like_mixin.py +60 -0
  197. luna_quantum/solve/use_cases/__init__.py +119 -0
  198. luna_quantum/solve/use_cases/arbitrage_edge_based.py +50 -0
  199. luna_quantum/solve/use_cases/arbitrage_node_based.py +55 -0
  200. luna_quantum/solve/use_cases/base.py +7 -0
  201. luna_quantum/solve/use_cases/binary_integer_linear_programming.py +54 -0
  202. luna_quantum/solve/use_cases/binary_paint_shop_problem.py +37 -0
  203. luna_quantum/solve/use_cases/credit_scoring_feature_selection.py +40 -0
  204. luna_quantum/solve/use_cases/dynamic_portfolio_optimization.py +64 -0
  205. luna_quantum/solve/use_cases/exact_cover.py +51 -0
  206. luna_quantum/solve/use_cases/flight_gate_assignment.py +79 -0
  207. luna_quantum/solve/use_cases/graph_coloring.py +42 -0
  208. luna_quantum/solve/use_cases/graph_isomorphism.py +52 -0
  209. luna_quantum/solve/use_cases/graph_partitioning.py +46 -0
  210. luna_quantum/solve/use_cases/hamiltonian_cycle.py +49 -0
  211. luna_quantum/solve/use_cases/induced_subgraph_isomorphism.py +50 -0
  212. luna_quantum/solve/use_cases/job_shop_scheduling.py +44 -0
  213. luna_quantum/solve/use_cases/k_medoids_clustering.py +49 -0
  214. luna_quantum/solve/use_cases/knapsack_integer_weights.py +56 -0
  215. luna_quantum/solve/use_cases/linear_regression.py +60 -0
  216. luna_quantum/solve/use_cases/lmwcs.py +84 -0
  217. luna_quantum/solve/use_cases/longest_path.py +50 -0
  218. luna_quantum/solve/use_cases/market_graph_clustering.py +61 -0
  219. luna_quantum/solve/use_cases/max2sat.py +54 -0
  220. luna_quantum/solve/use_cases/max3sat.py +55 -0
  221. luna_quantum/solve/use_cases/max_clique.py +60 -0
  222. luna_quantum/solve/use_cases/max_cut.py +48 -0
  223. luna_quantum/solve/use_cases/max_independent_set.py +37 -0
  224. luna_quantum/solve/use_cases/minimal_maximal_matching.py +54 -0
  225. luna_quantum/solve/use_cases/minimal_spanning_tree.py +90 -0
  226. luna_quantum/solve/use_cases/minimum_vertex_cover.py +45 -0
  227. luna_quantum/solve/use_cases/number_partitioning.py +32 -0
  228. luna_quantum/solve/use_cases/portfolio_optimization.py +46 -0
  229. luna_quantum/solve/use_cases/portfolio_optimization_ib_tv.py +63 -0
  230. luna_quantum/solve/use_cases/quadratic_assignment.py +49 -0
  231. luna_quantum/solve/use_cases/quadratic_knapsack.py +48 -0
  232. luna_quantum/solve/use_cases/satellite_scheduling.py +73 -0
  233. luna_quantum/solve/use_cases/sensor_placement.py +58 -0
  234. luna_quantum/solve/use_cases/set_cover.py +56 -0
  235. luna_quantum/solve/use_cases/set_packing.py +54 -0
  236. luna_quantum/solve/use_cases/set_partitioning.py +52 -0
  237. luna_quantum/solve/use_cases/subgraph_isomorphism.py +55 -0
  238. luna_quantum/solve/use_cases/subset_sum.py +37 -0
  239. luna_quantum/solve/use_cases/support_vector_machine.py +64 -0
  240. luna_quantum/solve/use_cases/traffic_flow.py +35 -0
  241. luna_quantum/solve/use_cases/travelling_salesman_problem.py +53 -0
  242. luna_quantum/solve/use_cases/type_aliases.py +9 -0
  243. luna_quantum/solve/use_cases/weighted_max_cut.py +37 -0
  244. luna_quantum/solve/usecases/__init__.py +45 -0
  245. luna_quantum/solve/usecases/model_delete_usecase.py +49 -0
  246. luna_quantum/solve/usecases/model_fetch_metadata_usecase.py +50 -0
  247. luna_quantum/solve/usecases/model_get_solution_usecase.py +59 -0
  248. luna_quantum/solve/usecases/model_get_solve_jobs_usecase.py +62 -0
  249. luna_quantum/solve/usecases/model_load_by_id_usecase.py +47 -0
  250. luna_quantum/solve/usecases/model_load_by_metadata_usecase.py +52 -0
  251. luna_quantum/solve/usecases/model_load_metadata_by_hash_usecase.py +51 -0
  252. luna_quantum/solve/usecases/model_save_usecase.py +63 -0
  253. luna_quantum/solve/usecases/solve_job_cancel_usecase.py +51 -0
  254. luna_quantum/solve/usecases/solve_job_create_usecase.py +112 -0
  255. luna_quantum/solve/usecases/solve_job_delete_usecase.py +38 -0
  256. luna_quantum/solve/usecases/solve_job_fetch_updates_usecase.py +49 -0
  257. luna_quantum/solve/usecases/solve_job_get_by_id_usecase.py +44 -0
  258. luna_quantum/solve/usecases/solve_job_get_result_usecase.py +105 -0
  259. luna_quantum/transformations.py +18 -0
  260. luna_quantum/transformations.pyi +371 -0
  261. luna_quantum/translator.py +23 -0
  262. luna_quantum/translator.pyi +869 -0
  263. luna_quantum/util/__init__.py +0 -0
  264. luna_quantum/util/active_waiting.py +79 -0
  265. luna_quantum/util/class_patcher.py +164 -0
  266. luna_quantum/util/debug_info.py +52 -0
  267. luna_quantum/util/log_utils.py +187 -0
  268. luna_quantum/util/pretty_base.py +67 -0
  269. luna_quantum/util/pydantic_utils.py +38 -0
  270. luna_quantum/utils.py +3 -0
  271. luna_quantum/utils.pyi +67 -0
  272. luna_quantum-1.1.0.dist-info/METADATA +36 -0
  273. luna_quantum-1.1.0.dist-info/RECORD +276 -0
  274. luna_quantum-1.1.0.dist-info/WHEEL +4 -0
  275. luna_quantum-1.1.0.dist-info/licenses/LICENSE +176 -0
  276. luna_quantum-1.1.0.dist-info/licenses/NOTICE +13 -0
@@ -0,0 +1,489 @@
1
+ from typing import ClassVar
2
+
3
+ from luna_quantum.client.interfaces.services.luna_solve_i import ILunaSolve
4
+ from luna_quantum.solve.interfaces.usecases import (
5
+ IModelLoadMetadataByHashUseCase,
6
+ ISolveJobGetByIdUseCase,
7
+ )
8
+ from luna_quantum.solve.interfaces.usecases.model_delete_usecase_i import (
9
+ IModelDeleteUseCase,
10
+ )
11
+ from luna_quantum.solve.interfaces.usecases.model_fetch_metadata_usecase_i import (
12
+ IModelFetchMetadataUseCase,
13
+ )
14
+ from luna_quantum.solve.interfaces.usecases.model_get_solutions_usecase_i import (
15
+ IModelGetSolutionUseCase,
16
+ )
17
+ from luna_quantum.solve.interfaces.usecases.model_get_solve_jobs_usecase_i import (
18
+ IModelGetSolveJobUseCase,
19
+ )
20
+ from luna_quantum.solve.interfaces.usecases.model_load_by_id_usecase_i import (
21
+ IModelLoadByIdUseCase,
22
+ )
23
+ from luna_quantum.solve.interfaces.usecases.model_load_by_metadata_usecase_i import (
24
+ IModelLoadByMetadataUseCase,
25
+ )
26
+ from luna_quantum.solve.interfaces.usecases.model_save_usecase_i import (
27
+ IModelSaveUseCase,
28
+ )
29
+ from luna_quantum.solve.interfaces.usecases.solve_job_cancel_usecase_i import (
30
+ ISolveJobCancelUseCase,
31
+ )
32
+ from luna_quantum.solve.interfaces.usecases.solve_job_create_usecase_i import (
33
+ ISolveJobCreateUseCase,
34
+ )
35
+ from luna_quantum.solve.interfaces.usecases.solve_job_delete_usecase_i import (
36
+ ISolveJobDeleteUseCase,
37
+ )
38
+ from luna_quantum.solve.interfaces.usecases.solve_job_fetch_updates_usecase_i import (
39
+ ISolveJobFetchUpdatesUseCase,
40
+ )
41
+ from luna_quantum.solve.interfaces.usecases.solve_job_get_result_usecase_i import (
42
+ ISolveJobGetResultUseCase,
43
+ )
44
+
45
+
46
+ class UseCaseFactory:
47
+ """
48
+ Factory class to manage use-case implementations.
49
+
50
+ This class provides methods to manage and configure use-case classes for various
51
+ model and solve job operations.
52
+ """
53
+
54
+ _model_fetch_class: ClassVar[type[IModelFetchMetadataUseCase]]
55
+ _model_delete_class: ClassVar[type[IModelDeleteUseCase]]
56
+ _model_get_solution_class: ClassVar[type[IModelGetSolutionUseCase]]
57
+ _model_get_solve_job_class: ClassVar[type[IModelGetSolveJobUseCase]]
58
+ _model_load_by_id_class: ClassVar[type[IModelLoadByIdUseCase]]
59
+ _model_load_by_hash_class: ClassVar[type[IModelLoadMetadataByHashUseCase]]
60
+ _model_load_by_metadata_class: ClassVar[type[IModelLoadByMetadataUseCase]]
61
+ _model_save_class: ClassVar[type[IModelSaveUseCase]]
62
+
63
+ _solve_job_cancel_class: ClassVar[type[ISolveJobCancelUseCase]]
64
+ _solve_job_create_class: ClassVar[type[ISolveJobCreateUseCase]]
65
+ _solve_job_delete_class: ClassVar[type[ISolveJobDeleteUseCase]]
66
+ _solve_job_get_result_class: ClassVar[type[ISolveJobGetResultUseCase]]
67
+ _solve_job_fetch_updates_class: ClassVar[type[ISolveJobFetchUpdatesUseCase]]
68
+ _solve_job_get_by_id_class: ClassVar[type[ISolveJobGetByIdUseCase]]
69
+
70
+ @classmethod
71
+ def set_model_fetch_class(
72
+ cls, model_fetch_class: type[IModelFetchMetadataUseCase]
73
+ ) -> None:
74
+ """Set the implementation class for model fetch operations.
75
+
76
+ Parameters
77
+ ----------
78
+ model_fetch_class : Type[IModelFetchMetadataUseCase]
79
+ The class implementing IModelFetchMetadataUseCase
80
+ """
81
+ cls._model_fetch_class = model_fetch_class
82
+
83
+ @classmethod
84
+ def set_model_delete_class(
85
+ cls, model_delete_class: type[IModelDeleteUseCase]
86
+ ) -> None:
87
+ """Set the implementation class for model delete operations.
88
+
89
+ Parameters
90
+ ----------
91
+ model_delete_class : Type[IModelDeleteUseCase]
92
+ The class implementing IModelDeleteUseCase
93
+ """
94
+ cls._model_delete_class = model_delete_class
95
+
96
+ @classmethod
97
+ def set_model_get_solution_class(
98
+ cls, model_get_solution_class: type[IModelGetSolutionUseCase]
99
+ ) -> None:
100
+ """Set the implementation class for getting model solutions.
101
+
102
+ Parameters
103
+ ----------
104
+ model_get_solution_class : Type[IModelGetSolutionUseCase]
105
+ The class implementing IModelGetSolutionUseCase
106
+ """
107
+ cls._model_get_solution_class = model_get_solution_class
108
+
109
+ @classmethod
110
+ def set_model_get_solve_job_class(
111
+ cls, model_get_solve_job_class: type[IModelGetSolveJobUseCase]
112
+ ) -> None:
113
+ """Set the implementation class for getting model solve jobs.
114
+
115
+ Parameters
116
+ ----------
117
+ model_get_solve_job_class : Type[IModelGetSolveJobUseCase]
118
+ The class implementing IModelGetSolveJobUseCase
119
+ """
120
+ cls._model_get_solve_job_class = model_get_solve_job_class
121
+
122
+ @classmethod
123
+ def set_model_load_by_id_class(
124
+ cls, model_load_by_id_class: type[IModelLoadByIdUseCase]
125
+ ) -> None:
126
+ """Set the implementation class for loading models by ID.
127
+
128
+ Parameters
129
+ ----------
130
+ model_load_by_id_class : Type[IModelLoadByIdUseCase]
131
+ The class implementing IModelLoadByIdUseCase
132
+ """
133
+ cls._model_load_by_id_class = model_load_by_id_class
134
+
135
+ @classmethod
136
+ def set_model_load_by_hash_class(
137
+ cls, model_load_by_hash_class: type[IModelLoadMetadataByHashUseCase]
138
+ ) -> None:
139
+ """Set the implementation class for loading model metadata by hash.
140
+
141
+ Parameters
142
+ ----------
143
+ model_load_by_hash_class : Type[IModelLoadMetadataByHashUseCase]
144
+ The class implementing IModelLoadMetadataByHashUseCase
145
+ """
146
+ cls._model_load_by_hash_class = model_load_by_hash_class
147
+
148
+ @classmethod
149
+ def set_model_load_by_metadata_class(
150
+ cls, model_load_by_metadata_class: type[IModelLoadByMetadataUseCase]
151
+ ) -> None:
152
+ """Set the implementation class for loading models by metadata.
153
+
154
+ Parameters
155
+ ----------
156
+ model_load_by_metadata_class : Type[IModelLoadByMetadataUseCase]
157
+ The class implementing IModelLoadByMetadataUseCase
158
+ """
159
+ cls._model_load_by_metadata_class = model_load_by_metadata_class
160
+
161
+ @classmethod
162
+ def set_model_save_class(cls, model_save_class: type[IModelSaveUseCase]) -> None:
163
+ """Set the implementation class for saving models.
164
+
165
+ Parameters
166
+ ----------
167
+ model_save_class : Type[IModelSaveUseCase]
168
+ The class implementing IModelSaveUseCase
169
+ """
170
+ cls._model_save_class = model_save_class
171
+
172
+ @classmethod
173
+ def set_solve_job_cancel_class(
174
+ cls, solve_job_cancel_class: type[ISolveJobCancelUseCase]
175
+ ) -> None:
176
+ """Set the implementation class for canceling solve jobs.
177
+
178
+ Parameters
179
+ ----------
180
+ solve_job_cancel_class : Type[ISolveJobCancelUseCase]
181
+ The class implementing ISolveJobCancelUseCase
182
+ """
183
+ cls._solve_job_cancel_class = solve_job_cancel_class
184
+
185
+ @classmethod
186
+ def set_solve_job_create_class(
187
+ cls, solve_job_create_class: type[ISolveJobCreateUseCase]
188
+ ) -> None:
189
+ """Set the implementation class for creating solve jobs.
190
+
191
+ Parameters
192
+ ----------
193
+ solve_job_create_class : Type[ISolveJobCreateUseCase]
194
+ The class implementing ISolveJobCreateUseCase
195
+ """
196
+ cls._solve_job_create_class = solve_job_create_class
197
+
198
+ @classmethod
199
+ def set_solve_job_delete_class(
200
+ cls, solve_job_delete_class: type[ISolveJobDeleteUseCase]
201
+ ) -> None:
202
+ """Set the implementation class for deleting solve jobs.
203
+
204
+ Parameters
205
+ ----------
206
+ solve_job_delete_class : Type[ISolveJobDeleteUseCase]
207
+ The class implementing ISolveJobDeleteUseCase
208
+ """
209
+ cls._solve_job_delete_class = solve_job_delete_class
210
+
211
+ @classmethod
212
+ def set_solve_job_get_result_class(
213
+ cls, solve_job_get_result_class: type[ISolveJobGetResultUseCase]
214
+ ) -> None:
215
+ """Set the implementation class for getting solve job results.
216
+
217
+ Parameters
218
+ ----------
219
+ solve_job_get_result_class : Type[ISolveJobGetResultUseCase]
220
+ The class implementing ISolveJobGetResultUseCase
221
+ """
222
+ cls._solve_job_get_result_class = solve_job_get_result_class
223
+
224
+ @classmethod
225
+ def set_solve_job_fetch_updates_class(
226
+ cls, solve_job_fetch_updates_class: type[ISolveJobFetchUpdatesUseCase]
227
+ ) -> None:
228
+ """Set the implementation class for fetching solve job updates.
229
+
230
+ Parameters
231
+ ----------
232
+ solve_job_fetch_updates_class : Type[ISolveJobFetchUpdatesUseCase]
233
+ The class implementing ISolveJobFetchUpdatesUseCase
234
+ """
235
+ cls._solve_job_fetch_updates_class = solve_job_fetch_updates_class
236
+
237
+ @classmethod
238
+ def set_solve_job_get_id_class(
239
+ cls, solve_job_get_by_id_class: type[ISolveJobGetByIdUseCase]
240
+ ) -> None:
241
+ """Set the implementation class for fetching solve job updates.
242
+
243
+ Parameters
244
+ ----------
245
+ solve_job_get_by_id_class : Type[ISolveJobGetByIdUseCase]
246
+ The class implementing ISolveJobGetByIdUseCase
247
+ """
248
+ cls._solve_job_get_by_id_class = solve_job_get_by_id_class
249
+
250
+ @classmethod
251
+ def model_load_by_id(cls, client: ILunaSolve) -> IModelLoadByIdUseCase:
252
+ """
253
+ Get the use-case to load a model using its ID.
254
+
255
+ Parameters
256
+ ----------
257
+ client : ILunaSolve
258
+ The client used to load the model by its ID.
259
+
260
+ Returns
261
+ -------
262
+ IModelLoadByIdUseCase
263
+ An instance of the model loaded by ID.
264
+ """
265
+ return cls._model_load_by_id_class(client=client)
266
+
267
+ @classmethod
268
+ def model_load_by_metadata(cls, client: ILunaSolve) -> IModelLoadByMetadataUseCase:
269
+ """
270
+ Get the use-case to load a model using metadata.
271
+
272
+ Parameters
273
+ ----------
274
+ client : ILunaSolve
275
+ The client interface used to load the model by metadata.
276
+
277
+ Returns
278
+ -------
279
+ IModelLoadByMetadataUseCase
280
+ The instance to handle model loading by metadata.
281
+ """
282
+ return cls._model_load_by_metadata_class(client=client)
283
+
284
+ @classmethod
285
+ def model_save(cls, client: ILunaSolve) -> IModelSaveUseCase:
286
+ """
287
+ Get the use-case to save the model using the specified client.
288
+
289
+ Parameters
290
+ ----------
291
+ client : ILunaSolve
292
+ The client used for performing the model save operation.
293
+
294
+ Returns
295
+ -------
296
+ IModelSaveUseCase
297
+ An instance of the class responsible for handling model save use cases.
298
+
299
+ """
300
+ return cls._model_save_class(client=client)
301
+
302
+ @classmethod
303
+ def model_fetch(cls, client: ILunaSolve) -> IModelFetchMetadataUseCase:
304
+ """
305
+ Get the use-case to fetch model metadata.
306
+
307
+ Parameters
308
+ ----------
309
+ client : ILunaSolve
310
+ The client used to fetch the metadata of the model.
311
+
312
+ Returns
313
+ -------
314
+ IModelFetchMetadataUseCase
315
+ An instance of the class responsible for fetching model metadata.
316
+ """
317
+ return cls._model_fetch_class(client=client)
318
+
319
+ @classmethod
320
+ def model_delete(cls, client: ILunaSolve) -> IModelDeleteUseCase:
321
+ """
322
+ Get the use-case to delete a model.
323
+
324
+ Parameters
325
+ ----------
326
+ client : ILunaSolve
327
+ The client used to delete the model.
328
+
329
+ Returns
330
+ -------
331
+ IModelDeleteUseCase
332
+ An instance of the class responsible for deleting models.
333
+ """
334
+ return cls._model_delete_class(client=client)
335
+
336
+ @classmethod
337
+ def model_get_solution(cls, client: ILunaSolve) -> IModelGetSolutionUseCase:
338
+ """
339
+ Get the use-case to retrieve solutions for a model.
340
+
341
+ Parameters
342
+ ----------
343
+ client : ILunaSolve
344
+ The client used to fetch solutions for the model.
345
+
346
+ Returns
347
+ -------
348
+ IModelGetSolutionUseCase
349
+ An instance of the class responsible for retrieving solutions.
350
+ """
351
+ return cls._model_get_solution_class(client=client)
352
+
353
+ @classmethod
354
+ def model_get_solve_job(cls, client: ILunaSolve) -> IModelGetSolveJobUseCase:
355
+ """
356
+ Get the use-case to retrieve solve jobs of a model.
357
+
358
+ Parameters
359
+ ----------
360
+ client : ILunaSolve
361
+ The client used to get the solve jobs of the model.
362
+
363
+ Returns
364
+ -------
365
+ IModelGetSolveJobUseCase
366
+ An instance of the class responsible for retrieving solve jobs.
367
+ """
368
+ return cls._model_get_solve_job_class(client=client)
369
+
370
+ @classmethod
371
+ def solve_job_cancel(cls, client: ILunaSolve) -> ISolveJobCancelUseCase:
372
+ """
373
+ Get the use-case to cancel a solve job.
374
+
375
+ Parameters
376
+ ----------
377
+ client : ILunaSolve
378
+ The client used to cancel a solve job.
379
+
380
+ Returns
381
+ -------
382
+ ISolveJobCancelUseCase
383
+ An instance of the class responsible for canceling solve jobs.
384
+ """
385
+ return cls._solve_job_cancel_class(client=client)
386
+
387
+ @classmethod
388
+ def solve_job_create(cls, client: ILunaSolve) -> ISolveJobCreateUseCase:
389
+ """
390
+ Get the use-case to create a new solve job.
391
+
392
+ Parameters
393
+ ----------
394
+ client : ILunaSolve
395
+ The client used to create a new solve job.
396
+
397
+ Returns
398
+ -------
399
+ ISolveJobCreateUseCase
400
+ An instance of the class responsible for creating solve jobs.
401
+ """
402
+ return cls._solve_job_create_class(client=client)
403
+
404
+ @classmethod
405
+ def solve_job_delete(cls, client: ILunaSolve) -> ISolveJobDeleteUseCase:
406
+ """
407
+ Get the use-case to delete a solve job.
408
+
409
+ Parameters
410
+ ----------
411
+ client : ILunaSolve
412
+ The client used to delete a solve job.
413
+
414
+ Returns
415
+ -------
416
+ ISolveJobDeleteUseCase
417
+ An instance of the class responsible for deleting solve jobs.
418
+ """
419
+ return cls._solve_job_delete_class(client=client)
420
+
421
+ @classmethod
422
+ def solve_job_get_result(cls, client: ILunaSolve) -> ISolveJobGetResultUseCase:
423
+ """
424
+ Get the use-case to fetch results of a solve job.
425
+
426
+ Parameters
427
+ ----------
428
+ client : ILunaSolve
429
+ The client used to fetch results of the solve job.
430
+
431
+ Returns
432
+ -------
433
+ ISolveJobGetResultUseCase
434
+ An instance of the class responsible for fetching solve job results.
435
+ """
436
+ return cls._solve_job_get_result_class(client=client)
437
+
438
+ @classmethod
439
+ def solve_job_fetch_update(cls, client: ILunaSolve) -> ISolveJobFetchUpdatesUseCase:
440
+ """
441
+ Get the use-case to fetch updates for a solve job.
442
+
443
+ Parameters
444
+ ----------
445
+ client : ILunaSolve
446
+ The client used to fetch updates for a solve job.
447
+
448
+ Returns
449
+ -------
450
+ ISolveJobFetchUpdatesUseCase
451
+ An instance of the class responsible for fetching solve job updates.
452
+ """
453
+ return cls._solve_job_fetch_updates_class(client=client)
454
+
455
+ @classmethod
456
+ def solve_job_get_by_id(cls, client: ILunaSolve) -> ISolveJobGetByIdUseCase:
457
+ """
458
+ Get the use-case to retrieve a solve-job by its id.
459
+
460
+ Parameters
461
+ ----------
462
+ client : ILunaSolve
463
+ The client used to retrieve a solve-job.
464
+
465
+ Returns
466
+ -------
467
+ ISolveJobGetByIdUseCase
468
+ An instance of the class responsible for retrieving a solve job by its id.
469
+ """
470
+ return cls._solve_job_get_by_id_class(client=client)
471
+
472
+ @classmethod
473
+ def model_load_metadata_by_hash(
474
+ cls, client: ILunaSolve
475
+ ) -> IModelLoadMetadataByHashUseCase:
476
+ """
477
+ Get the use-case to load model metadata by its hash.
478
+
479
+ Parameters
480
+ ----------
481
+ client : ILunaSolve
482
+ The client used to load model metadata using a hash.
483
+
484
+ Returns
485
+ -------
486
+ IModelLoadMetadataByHashUseCase
487
+ An instance of the class responsible for loading model metadata by hash.
488
+ """
489
+ return cls._model_load_by_hash_class(client=client)
luna_quantum/py.typed ADDED
File without changes
@@ -0,0 +1,13 @@
1
+ from .default_token import DefaultToken
2
+ from .domain.model_metadata import ModelMetadata
3
+ from .domain.solve_job import SolveJob
4
+ from .parameters import algorithms, backends, constants
5
+
6
+ __all__ = [
7
+ "DefaultToken",
8
+ "ModelMetadata",
9
+ "SolveJob",
10
+ "algorithms",
11
+ "backends",
12
+ "constants",
13
+ ]