jijmodeling 0.10.18__cp310-cp310-win_amd64.whl → 1.11.0__cp310-cp310-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.

Potentially problematic release.


This version of jijmodeling might be problematic. Click here for more details.

Files changed (273) hide show
  1. jijmodeling/__init__.py +1 -148
  2. jijmodeling/__init__.pyi +5152 -0
  3. jijmodeling/_jijmodeling.cp310-win_amd64.pyd +0 -0
  4. jijmodeling/dataset.py +5 -0
  5. jijmodeling/dataset.pyi +106 -0
  6. jijmodeling/experimental.py +13 -0
  7. jijmodeling/experimental.pyi +302 -0
  8. jijmodeling/py.typed +0 -0
  9. jijmodeling/range/__init__.py +14 -0
  10. jijmodeling/range/__init__.pyi +56 -0
  11. jijmodeling/range/size.py +14 -0
  12. jijmodeling/range/size.pyi +54 -0
  13. jijmodeling/range/value.py +14 -0
  14. jijmodeling/range/value.pyi +54 -0
  15. jijmodeling-1.11.0.dist-info/METADATA +235 -0
  16. jijmodeling-1.11.0.dist-info/RECORD +18 -0
  17. {jijmodeling-0.10.18.dist-info → jijmodeling-1.11.0.dist-info}/WHEEL +1 -2
  18. {jijmodeling-0.10.18.dist-info → jijmodeling-1.11.0.dist-info/licenses}/LICENSE.txt +1 -1
  19. jijmodeling/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  20. jijmodeling/__pycache__/__init__.cpython-310.pyc +0 -0
  21. jijmodeling/__pycache__/_version.cpython-310.opt-1.pyc +0 -0
  22. jijmodeling/__pycache__/_version.cpython-310.pyc +0 -0
  23. jijmodeling/_version.py +0 -4
  24. jijmodeling/exceptions/__init__.py +0 -26
  25. jijmodeling/exceptions/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  26. jijmodeling/exceptions/__pycache__/__init__.cpython-310.pyc +0 -0
  27. jijmodeling/exceptions/__pycache__/exceptions.cpython-310.opt-1.pyc +0 -0
  28. jijmodeling/exceptions/__pycache__/exceptions.cpython-310.pyc +0 -0
  29. jijmodeling/exceptions/exceptions.py +0 -37
  30. jijmodeling/expression/__init__.py +0 -74
  31. jijmodeling/expression/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  32. jijmodeling/expression/__pycache__/__init__.cpython-310.pyc +0 -0
  33. jijmodeling/expression/__pycache__/condition.cpython-310.opt-1.pyc +0 -0
  34. jijmodeling/expression/__pycache__/condition.cpython-310.pyc +0 -0
  35. jijmodeling/expression/__pycache__/constraint.cpython-310.opt-1.pyc +0 -0
  36. jijmodeling/expression/__pycache__/constraint.cpython-310.pyc +0 -0
  37. jijmodeling/expression/__pycache__/expression.cpython-310.opt-1.pyc +0 -0
  38. jijmodeling/expression/__pycache__/expression.cpython-310.pyc +0 -0
  39. jijmodeling/expression/__pycache__/extract.cpython-310.opt-1.pyc +0 -0
  40. jijmodeling/expression/__pycache__/extract.cpython-310.pyc +0 -0
  41. jijmodeling/expression/__pycache__/from_old_serializable.cpython-310.opt-1.pyc +0 -0
  42. jijmodeling/expression/__pycache__/from_old_serializable.cpython-310.pyc +0 -0
  43. jijmodeling/expression/__pycache__/mathfunc.cpython-310.opt-1.pyc +0 -0
  44. jijmodeling/expression/__pycache__/mathfunc.cpython-310.pyc +0 -0
  45. jijmodeling/expression/__pycache__/prod.cpython-310.opt-1.pyc +0 -0
  46. jijmodeling/expression/__pycache__/prod.cpython-310.pyc +0 -0
  47. jijmodeling/expression/__pycache__/serializable.cpython-310.opt-1.pyc +0 -0
  48. jijmodeling/expression/__pycache__/serializable.cpython-310.pyc +0 -0
  49. jijmodeling/expression/__pycache__/sum.cpython-310.opt-1.pyc +0 -0
  50. jijmodeling/expression/__pycache__/sum.cpython-310.pyc +0 -0
  51. jijmodeling/expression/__pycache__/type_annotations.cpython-310.opt-1.pyc +0 -0
  52. jijmodeling/expression/__pycache__/type_annotations.cpython-310.pyc +0 -0
  53. jijmodeling/expression/__pycache__/utils.cpython-310.opt-1.pyc +0 -0
  54. jijmodeling/expression/__pycache__/utils.cpython-310.pyc +0 -0
  55. jijmodeling/expression/condition.py +0 -362
  56. jijmodeling/expression/constraint.py +0 -340
  57. jijmodeling/expression/expression.py +0 -706
  58. jijmodeling/expression/extract.py +0 -139
  59. jijmodeling/expression/from_old_serializable.py +0 -133
  60. jijmodeling/expression/mathfunc.py +0 -269
  61. jijmodeling/expression/prod.py +0 -117
  62. jijmodeling/expression/serializable.py +0 -132
  63. jijmodeling/expression/sum.py +0 -197
  64. jijmodeling/expression/type_annotations.py +0 -50
  65. jijmodeling/expression/utils.py +0 -201
  66. jijmodeling/expression/variables/__init__.py +0 -35
  67. jijmodeling/expression/variables/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  68. jijmodeling/expression/variables/__pycache__/__init__.cpython-310.pyc +0 -0
  69. jijmodeling/expression/variables/__pycache__/deci_vars.cpython-310.opt-1.pyc +0 -0
  70. jijmodeling/expression/variables/__pycache__/deci_vars.cpython-310.pyc +0 -0
  71. jijmodeling/expression/variables/__pycache__/jagged_array.cpython-310.opt-1.pyc +0 -0
  72. jijmodeling/expression/variables/__pycache__/jagged_array.cpython-310.pyc +0 -0
  73. jijmodeling/expression/variables/__pycache__/placeholders.cpython-310.opt-1.pyc +0 -0
  74. jijmodeling/expression/variables/__pycache__/placeholders.cpython-310.pyc +0 -0
  75. jijmodeling/expression/variables/__pycache__/variable.cpython-310.opt-1.pyc +0 -0
  76. jijmodeling/expression/variables/__pycache__/variable.cpython-310.pyc +0 -0
  77. jijmodeling/expression/variables/deci_vars.py +0 -136
  78. jijmodeling/expression/variables/jagged_array.py +0 -73
  79. jijmodeling/expression/variables/placeholders.py +0 -107
  80. jijmodeling/expression/variables/variable.py +0 -485
  81. jijmodeling/latex_repr/__init__.py +0 -11
  82. jijmodeling/latex_repr/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  83. jijmodeling/latex_repr/__pycache__/__init__.cpython-310.pyc +0 -0
  84. jijmodeling/latex_repr/__pycache__/latex_repr.cpython-310.opt-1.pyc +0 -0
  85. jijmodeling/latex_repr/__pycache__/latex_repr.cpython-310.pyc +0 -0
  86. jijmodeling/latex_repr/__pycache__/problem_latex_repr.cpython-310.opt-1.pyc +0 -0
  87. jijmodeling/latex_repr/__pycache__/problem_latex_repr.cpython-310.pyc +0 -0
  88. jijmodeling/latex_repr/latex_repr.py +0 -243
  89. jijmodeling/latex_repr/problem_latex_repr.py +0 -209
  90. jijmodeling/marker/__marker__.cp310-win_amd64.pyd +0 -0
  91. jijmodeling/match/__init__.py +0 -19
  92. jijmodeling/match/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  93. jijmodeling/match/__pycache__/__init__.cpython-310.pyc +0 -0
  94. jijmodeling/match/__pycache__/condition_same.cpython-310.opt-1.pyc +0 -0
  95. jijmodeling/match/__pycache__/condition_same.cpython-310.pyc +0 -0
  96. jijmodeling/match/__pycache__/constraint_same.cpython-310.opt-1.pyc +0 -0
  97. jijmodeling/match/__pycache__/constraint_same.cpython-310.pyc +0 -0
  98. jijmodeling/match/__pycache__/expr_same.cpython-310.opt-1.pyc +0 -0
  99. jijmodeling/match/__pycache__/expr_same.cpython-310.pyc +0 -0
  100. jijmodeling/match/__pycache__/is_same_expr.cpython-310.opt-1.pyc +0 -0
  101. jijmodeling/match/__pycache__/is_same_expr.cpython-310.pyc +0 -0
  102. jijmodeling/match/__pycache__/penalty_same.cpython-310.opt-1.pyc +0 -0
  103. jijmodeling/match/__pycache__/penalty_same.cpython-310.pyc +0 -0
  104. jijmodeling/match/__pycache__/problem_same.cpython-310.opt-1.pyc +0 -0
  105. jijmodeling/match/__pycache__/problem_same.cpython-310.pyc +0 -0
  106. jijmodeling/match/__pycache__/replace.cpython-310.opt-1.pyc +0 -0
  107. jijmodeling/match/__pycache__/replace.cpython-310.pyc +0 -0
  108. jijmodeling/match/condition_same.py +0 -44
  109. jijmodeling/match/constraint_same.py +0 -53
  110. jijmodeling/match/expr_same.py +0 -32
  111. jijmodeling/match/is_same_expr.py +0 -304
  112. jijmodeling/match/penalty_same.py +0 -31
  113. jijmodeling/match/problem_same.py +0 -44
  114. jijmodeling/match/replace.py +0 -210
  115. jijmodeling/problem/__init__.py +0 -9
  116. jijmodeling/problem/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  117. jijmodeling/problem/__pycache__/__init__.cpython-310.pyc +0 -0
  118. jijmodeling/problem/__pycache__/problem.cpython-310.opt-1.pyc +0 -0
  119. jijmodeling/problem/__pycache__/problem.cpython-310.pyc +0 -0
  120. jijmodeling/problem/problem.py +0 -166
  121. jijmodeling/protobuf/__init__.py +0 -8
  122. jijmodeling/protobuf/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  123. jijmodeling/protobuf/__pycache__/__init__.cpython-310.pyc +0 -0
  124. jijmodeling/protobuf/from_protobuf/__init__.py +0 -47
  125. jijmodeling/protobuf/from_protobuf/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  126. jijmodeling/protobuf/from_protobuf/__pycache__/__init__.cpython-310.pyc +0 -0
  127. jijmodeling/protobuf/from_protobuf/__pycache__/extract_attribute_value_from_header.cpython-310.opt-1.pyc +0 -0
  128. jijmodeling/protobuf/from_protobuf/__pycache__/extract_attribute_value_from_header.cpython-310.pyc +0 -0
  129. jijmodeling/protobuf/from_protobuf/__pycache__/from_protobuf.cpython-310.opt-1.pyc +0 -0
  130. jijmodeling/protobuf/from_protobuf/__pycache__/from_protobuf.cpython-310.pyc +0 -0
  131. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_array_shape.cpython-310.opt-1.pyc +0 -0
  132. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_array_shape.cpython-310.pyc +0 -0
  133. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_binary_op.cpython-310.opt-1.pyc +0 -0
  134. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_binary_op.cpython-310.pyc +0 -0
  135. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_binary_var.cpython-310.opt-1.pyc +0 -0
  136. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_binary_var.cpython-310.pyc +0 -0
  137. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_constraint.cpython-310.opt-1.pyc +0 -0
  138. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_constraint.cpython-310.pyc +0 -0
  139. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_element.cpython-310.opt-1.pyc +0 -0
  140. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_element.cpython-310.pyc +0 -0
  141. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_expression.cpython-310.opt-1.pyc +0 -0
  142. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_expression.cpython-310.pyc +0 -0
  143. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_forall.cpython-310.opt-1.pyc +0 -0
  144. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_forall.cpython-310.pyc +0 -0
  145. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_integer_var.cpython-310.opt-1.pyc +0 -0
  146. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_integer_var.cpython-310.pyc +0 -0
  147. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_jagged_array.cpython-310.opt-1.pyc +0 -0
  148. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_jagged_array.cpython-310.pyc +0 -0
  149. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_number_lit.cpython-310.opt-1.pyc +0 -0
  150. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_number_lit.cpython-310.pyc +0 -0
  151. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_penalty.cpython-310.opt-1.pyc +0 -0
  152. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_penalty.cpython-310.pyc +0 -0
  153. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_placeholder.cpython-310.opt-1.pyc +0 -0
  154. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_placeholder.cpython-310.pyc +0 -0
  155. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_problem.cpython-310.opt-1.pyc +0 -0
  156. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_problem.cpython-310.pyc +0 -0
  157. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_reduction_op.cpython-310.opt-1.pyc +0 -0
  158. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_reduction_op.cpython-310.pyc +0 -0
  159. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_subscript_op.cpython-310.opt-1.pyc +0 -0
  160. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_subscript_op.cpython-310.pyc +0 -0
  161. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_unary_op.cpython-310.opt-1.pyc +0 -0
  162. jijmodeling/protobuf/from_protobuf/__pycache__/message_to_unary_op.cpython-310.pyc +0 -0
  163. jijmodeling/protobuf/from_protobuf/extract_attribute_value_from_header.py +0 -26
  164. jijmodeling/protobuf/from_protobuf/from_protobuf.py +0 -38
  165. jijmodeling/protobuf/from_protobuf/message_to_array_shape.py +0 -35
  166. jijmodeling/protobuf/from_protobuf/message_to_binary_op.py +0 -83
  167. jijmodeling/protobuf/from_protobuf/message_to_binary_var.py +0 -46
  168. jijmodeling/protobuf/from_protobuf/message_to_constraint.py +0 -48
  169. jijmodeling/protobuf/from_protobuf/message_to_element.py +0 -30
  170. jijmodeling/protobuf/from_protobuf/message_to_expression.py +0 -92
  171. jijmodeling/protobuf/from_protobuf/message_to_forall.py +0 -33
  172. jijmodeling/protobuf/from_protobuf/message_to_integer_var.py +0 -54
  173. jijmodeling/protobuf/from_protobuf/message_to_jagged_array.py +0 -25
  174. jijmodeling/protobuf/from_protobuf/message_to_number_lit.py +0 -41
  175. jijmodeling/protobuf/from_protobuf/message_to_penalty.py +0 -36
  176. jijmodeling/protobuf/from_protobuf/message_to_placeholder.py +0 -47
  177. jijmodeling/protobuf/from_protobuf/message_to_problem.py +0 -51
  178. jijmodeling/protobuf/from_protobuf/message_to_reduction_op.py +0 -52
  179. jijmodeling/protobuf/from_protobuf/message_to_subscript_op.py +0 -46
  180. jijmodeling/protobuf/from_protobuf/message_to_unary_op.py +0 -47
  181. jijmodeling/protobuf/to_protobuf/__init__.py +0 -43
  182. jijmodeling/protobuf/to_protobuf/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  183. jijmodeling/protobuf/to_protobuf/__pycache__/__init__.cpython-310.pyc +0 -0
  184. jijmodeling/protobuf/to_protobuf/__pycache__/add_header_to_message.cpython-310.opt-1.pyc +0 -0
  185. jijmodeling/protobuf/to_protobuf/__pycache__/add_header_to_message.cpython-310.pyc +0 -0
  186. jijmodeling/protobuf/to_protobuf/__pycache__/array_shape_to_message.cpython-310.opt-1.pyc +0 -0
  187. jijmodeling/protobuf/to_protobuf/__pycache__/array_shape_to_message.cpython-310.pyc +0 -0
  188. jijmodeling/protobuf/to_protobuf/__pycache__/binary_op_to_message.cpython-310.opt-1.pyc +0 -0
  189. jijmodeling/protobuf/to_protobuf/__pycache__/binary_op_to_message.cpython-310.pyc +0 -0
  190. jijmodeling/protobuf/to_protobuf/__pycache__/binary_var_to_message.cpython-310.opt-1.pyc +0 -0
  191. jijmodeling/protobuf/to_protobuf/__pycache__/binary_var_to_message.cpython-310.pyc +0 -0
  192. jijmodeling/protobuf/to_protobuf/__pycache__/constraint_to_message.cpython-310.opt-1.pyc +0 -0
  193. jijmodeling/protobuf/to_protobuf/__pycache__/constraint_to_message.cpython-310.pyc +0 -0
  194. jijmodeling/protobuf/to_protobuf/__pycache__/element_to_message.cpython-310.opt-1.pyc +0 -0
  195. jijmodeling/protobuf/to_protobuf/__pycache__/element_to_message.cpython-310.pyc +0 -0
  196. jijmodeling/protobuf/to_protobuf/__pycache__/expression_to_message.cpython-310.opt-1.pyc +0 -0
  197. jijmodeling/protobuf/to_protobuf/__pycache__/expression_to_message.cpython-310.pyc +0 -0
  198. jijmodeling/protobuf/to_protobuf/__pycache__/forall_to_message.cpython-310.opt-1.pyc +0 -0
  199. jijmodeling/protobuf/to_protobuf/__pycache__/forall_to_message.cpython-310.pyc +0 -0
  200. jijmodeling/protobuf/to_protobuf/__pycache__/integer_var_to_message.cpython-310.opt-1.pyc +0 -0
  201. jijmodeling/protobuf/to_protobuf/__pycache__/integer_var_to_message.cpython-310.pyc +0 -0
  202. jijmodeling/protobuf/to_protobuf/__pycache__/jagged_array_to_message.cpython-310.opt-1.pyc +0 -0
  203. jijmodeling/protobuf/to_protobuf/__pycache__/jagged_array_to_message.cpython-310.pyc +0 -0
  204. jijmodeling/protobuf/to_protobuf/__pycache__/number_lit_to_message.cpython-310.opt-1.pyc +0 -0
  205. jijmodeling/protobuf/to_protobuf/__pycache__/number_lit_to_message.cpython-310.pyc +0 -0
  206. jijmodeling/protobuf/to_protobuf/__pycache__/penalty_to_message.cpython-310.opt-1.pyc +0 -0
  207. jijmodeling/protobuf/to_protobuf/__pycache__/penalty_to_message.cpython-310.pyc +0 -0
  208. jijmodeling/protobuf/to_protobuf/__pycache__/placeholder_to_message.cpython-310.opt-1.pyc +0 -0
  209. jijmodeling/protobuf/to_protobuf/__pycache__/placeholder_to_message.cpython-310.pyc +0 -0
  210. jijmodeling/protobuf/to_protobuf/__pycache__/problem_to_message.cpython-310.opt-1.pyc +0 -0
  211. jijmodeling/protobuf/to_protobuf/__pycache__/problem_to_message.cpython-310.pyc +0 -0
  212. jijmodeling/protobuf/to_protobuf/__pycache__/reduction_op_to_message.cpython-310.opt-1.pyc +0 -0
  213. jijmodeling/protobuf/to_protobuf/__pycache__/reduction_op_to_message.cpython-310.pyc +0 -0
  214. jijmodeling/protobuf/to_protobuf/__pycache__/subscript_op_to_message.cpython-310.opt-1.pyc +0 -0
  215. jijmodeling/protobuf/to_protobuf/__pycache__/subscript_op_to_message.cpython-310.pyc +0 -0
  216. jijmodeling/protobuf/to_protobuf/__pycache__/to_protobuf.cpython-310.opt-1.pyc +0 -0
  217. jijmodeling/protobuf/to_protobuf/__pycache__/to_protobuf.cpython-310.pyc +0 -0
  218. jijmodeling/protobuf/to_protobuf/__pycache__/unary_op_to_message.cpython-310.opt-1.pyc +0 -0
  219. jijmodeling/protobuf/to_protobuf/__pycache__/unary_op_to_message.cpython-310.pyc +0 -0
  220. jijmodeling/protobuf/to_protobuf/add_header_to_message.py +0 -35
  221. jijmodeling/protobuf/to_protobuf/array_shape_to_message.py +0 -43
  222. jijmodeling/protobuf/to_protobuf/binary_op_to_message.py +0 -101
  223. jijmodeling/protobuf/to_protobuf/binary_var_to_message.py +0 -49
  224. jijmodeling/protobuf/to_protobuf/constraint_to_message.py +0 -52
  225. jijmodeling/protobuf/to_protobuf/element_to_message.py +0 -43
  226. jijmodeling/protobuf/to_protobuf/expression_to_message.py +0 -89
  227. jijmodeling/protobuf/to_protobuf/forall_to_message.py +0 -32
  228. jijmodeling/protobuf/to_protobuf/integer_var_to_message.py +0 -54
  229. jijmodeling/protobuf/to_protobuf/jagged_array_to_message.py +0 -37
  230. jijmodeling/protobuf/to_protobuf/number_lit_to_message.py +0 -52
  231. jijmodeling/protobuf/to_protobuf/penalty_to_message.py +0 -42
  232. jijmodeling/protobuf/to_protobuf/placeholder_to_message.py +0 -58
  233. jijmodeling/protobuf/to_protobuf/problem_to_message.py +0 -54
  234. jijmodeling/protobuf/to_protobuf/reduction_op_to_message.py +0 -64
  235. jijmodeling/protobuf/to_protobuf/subscript_op_to_message.py +0 -48
  236. jijmodeling/protobuf/to_protobuf/to_protobuf.py +0 -36
  237. jijmodeling/protobuf/to_protobuf/unary_op_to_message.py +0 -58
  238. jijmodeling/sampleset/__init__.py +0 -33
  239. jijmodeling/sampleset/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  240. jijmodeling/sampleset/__pycache__/__init__.cpython-310.pyc +0 -0
  241. jijmodeling/sampleset/__pycache__/evaluation.cpython-310.opt-1.pyc +0 -0
  242. jijmodeling/sampleset/__pycache__/evaluation.cpython-310.pyc +0 -0
  243. jijmodeling/sampleset/__pycache__/measuring_time.cpython-310.opt-1.pyc +0 -0
  244. jijmodeling/sampleset/__pycache__/measuring_time.cpython-310.pyc +0 -0
  245. jijmodeling/sampleset/__pycache__/record.cpython-310.opt-1.pyc +0 -0
  246. jijmodeling/sampleset/__pycache__/record.cpython-310.pyc +0 -0
  247. jijmodeling/sampleset/__pycache__/sampleset.cpython-310.opt-1.pyc +0 -0
  248. jijmodeling/sampleset/__pycache__/sampleset.cpython-310.pyc +0 -0
  249. jijmodeling/sampleset/__pycache__/solving_time.cpython-310.opt-1.pyc +0 -0
  250. jijmodeling/sampleset/__pycache__/solving_time.cpython-310.pyc +0 -0
  251. jijmodeling/sampleset/__pycache__/system_time.cpython-310.opt-1.pyc +0 -0
  252. jijmodeling/sampleset/__pycache__/system_time.cpython-310.pyc +0 -0
  253. jijmodeling/sampleset/evaluation.py +0 -288
  254. jijmodeling/sampleset/measuring_time.py +0 -59
  255. jijmodeling/sampleset/record.py +0 -158
  256. jijmodeling/sampleset/sampleset.py +0 -379
  257. jijmodeling/sampleset/solving_time.py +0 -38
  258. jijmodeling/sampleset/system_time.py +0 -48
  259. jijmodeling/type_annotations/__init__.py +0 -44
  260. jijmodeling/type_annotations/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  261. jijmodeling/type_annotations/__pycache__/__init__.cpython-310.pyc +0 -0
  262. jijmodeling/type_annotations/__pycache__/type_annotations.cpython-310.opt-1.pyc +0 -0
  263. jijmodeling/type_annotations/__pycache__/type_annotations.cpython-310.pyc +0 -0
  264. jijmodeling/type_annotations/type_annotations.py +0 -54
  265. jijmodeling/utils/__init__.py +0 -28
  266. jijmodeling/utils/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
  267. jijmodeling/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  268. jijmodeling/utils/__pycache__/utils.cpython-310.opt-1.pyc +0 -0
  269. jijmodeling/utils/__pycache__/utils.cpython-310.pyc +0 -0
  270. jijmodeling/utils/utils.py +0 -146
  271. jijmodeling-0.10.18.dist-info/METADATA +0 -60
  272. jijmodeling-0.10.18.dist-info/RECORD +0 -258
  273. jijmodeling-0.10.18.dist-info/top_level.txt +0 -1
@@ -1,58 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import jijmodeling_schema as pb
4
-
5
- from jijmodeling.expression.variables.placeholders import ArrayShape, Placeholder
6
-
7
-
8
- def placeholder_to_message(placeholder: Placeholder) -> pb.Expression:
9
- """
10
- Convert a `Placeholder` object to an `Expression` message.
11
-
12
- Args:
13
- placeholder (Placeholder): a `Placeholder` object
14
-
15
- Returns:
16
- pb.Expression: an `Expression` message
17
- """
18
- # Create an empty `Placeholder` message.
19
- placeholder_message = pb.Placeholder()
20
-
21
- # Set the symbol.
22
- placeholder_message.symbol = placeholder.label
23
-
24
- # Set the number of dimensions.
25
- placeholder_message.dim = placeholder.dim
26
-
27
- # Create an empty `Expression` message.
28
- message = pb.Expression()
29
-
30
- # Set the id that the `Placeholder` object has.
31
- message.id = placeholder.uuid
32
-
33
- # Set the shape
34
- for shape in placeholder.shape:
35
- # Case: number of elements is variadic.
36
- if type(shape) is ArrayShape:
37
- # Set the kind of the element of the shape.
38
- placeholder_message.shape.append(pb.PlaceholderShapeElement.DYNAMIC)
39
- # Case: number of elements is fixed.
40
- else:
41
- # Set the kind of the element of the shape.
42
- placeholder_message.shape.append(pb.PlaceholderShapeElement.EXPRESSION)
43
-
44
- # NOTE: Import a module within a local scope to fix a circular import.
45
- # - https://stackoverflow.com/questions/59462679/design-of-python-conditional-imports
46
- # - https://medium.com/@hamana.hadrien/so-you-got-a-circular-import-in-python-e9142fe10591
47
- from jijmodeling.protobuf.to_protobuf.expression_to_message import (
48
- expression_to_message,
49
- )
50
-
51
- # Set the shape
52
- message.children.append(expression_to_message(shape))
53
-
54
- # Set the kind of nodes to a `Placeholder` message.
55
- message.kind.placeholder = placeholder_message
56
-
57
- # Serialize the `Expression` object into a bytes object.
58
- return message
@@ -1,54 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import jijmodeling_schema as pb
4
-
5
- from ulid import ULID
6
-
7
- from jijmodeling.problem.problem import Problem, ProblemSense
8
- from jijmodeling.protobuf.to_protobuf.constraint_to_message import constraint_to_message
9
- from jijmodeling.protobuf.to_protobuf.expression_to_message import expression_to_message
10
- from jijmodeling.protobuf.to_protobuf.penalty_to_message import penalty_to_message
11
-
12
-
13
- def problem_to_message(problem: Problem) -> pb.Problem:
14
- """
15
- Convert a `Problem` object into a `Problem` message.
16
-
17
- Args:
18
- problem (Problem): a `Problem` object
19
-
20
- Returns:
21
- pb.Problem: a `Problem` message
22
- """
23
- # Create an empty `Problem` message.
24
- message = pb.Problem()
25
-
26
- # Set the name of the problem.
27
- message.name = problem.name
28
-
29
- # Set the id of the problem.
30
- message.id = str(ULID())
31
-
32
- # Set sense of the problem.
33
- if problem.sense == ProblemSense.MINIMUM:
34
- message.sense = pb.ProblemSense.MIN
35
- else:
36
- message.sense = pb.ProblemSense.MAX
37
-
38
- # Set the objective function.
39
- message.objective = expression_to_message(problem.objective)
40
-
41
- # Set the constraints.
42
- message.constraints.extend(
43
- [
44
- constraint_to_message(constraint)
45
- for constraint in problem.constraints.values()
46
- ]
47
- )
48
-
49
- # Set the user-defined penalties.
50
- message.penalties.extend(
51
- [penalty_to_message(penalty) for penalty in problem.penalties.values()]
52
- )
53
-
54
- return message
@@ -1,64 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import jijmodeling_schema as pb
4
-
5
- from jijmodeling.expression.condition import NoneCondition
6
- from jijmodeling.expression.prod import ProdOperator
7
- from jijmodeling.expression.sum import ReductionOperator, SumOperator
8
-
9
-
10
- def reduction_op_to_message(reduction_op: ReductionOperator) -> pb.Expression:
11
- """
12
- Convert a `ReductionOperator` object to a `ReductionOp` message.
13
-
14
- Args:
15
- reduction_op (ReductionOperator): a `ReductionOperator` object.
16
-
17
- Raises:
18
- TypeError: the error occurs if the kind of the reduction operator is not supported
19
-
20
- Returns:
21
- pb.Expression: an `Expression` message.
22
- """
23
- # Create an empty `ReductionOp` message.
24
- reduction_op_message = pb.ReductionOp()
25
-
26
- # Set the kind of the `ReductionOp`.
27
- if type(reduction_op) is SumOperator:
28
- reduction_op_message.kind = pb.ReductionOpKind.SUM
29
- elif type(reduction_op) is ProdOperator:
30
- reduction_op_message.kind = pb.ReductionOpKind.PROD
31
- else:
32
- raise TypeError(f"{reduction_op.__class__.__name__} is not supported.")
33
-
34
- # Create an empty `Expression` message.
35
- message = pb.Expression()
36
-
37
- # Set the id that the `Expression` object has.
38
- message.id = reduction_op.uuid
39
-
40
- # NOTE: Import a module within a local scope to fix a circular import.
41
- # - https://stackoverflow.com/questions/59462679/design-of-python-conditional-imports
42
- # - https://medium.com/@hamana.hadrien/so-you-got-a-circular-import-in-python-e9142fe10591
43
- from jijmodeling.protobuf.to_protobuf.expression_to_message import (
44
- expression_to_message,
45
- )
46
-
47
- # Set the index.
48
- message.children.append(expression_to_message(reduction_op.sum_index))
49
-
50
- # Set the operand.
51
- message.children.append(expression_to_message(reduction_op.operand))
52
-
53
- # Set the condition expression if the `ReductionOp` object has it.
54
- if type(reduction_op.condition) is NoneCondition:
55
- reduction_op_message.has_condition = False
56
- else:
57
- reduction_op_message.has_condition = True
58
- # Set the condition expression
59
- message.children.append(expression_to_message(reduction_op.condition))
60
-
61
- # Set the kind of nodes to an `ReductionOp` message.
62
- message.kind.reduction_op = reduction_op_message
63
-
64
- return message
@@ -1,48 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import jijmodeling_schema as pb
4
-
5
- from jijmodeling.expression.variables.variable import Subscripts
6
-
7
-
8
- def subscript_op_to_message(subscript_op: Subscripts) -> pb.Expression:
9
- """
10
- Convert a `Subscripts` object to a `SubscriptOp` message.
11
-
12
- Args:
13
- subscript_op (Subscripts): a `Subscripts` object.
14
-
15
- Returns:
16
- pb.Expression: an `Expression` message.
17
- """
18
- # Create an empty `SubscriptOp` message.
19
- subscript_op_message = pb.SubscriptOp()
20
-
21
- # Set length of the subscripts.
22
- subscript_op_message.num_subs = len(subscript_op.subscripts)
23
-
24
- # Create an empty `Expression` message.
25
- message = pb.Expression()
26
-
27
- # Set the id that the `Expression` object has.
28
- message.id = subscript_op.uuid
29
-
30
- # Set the kind of nodes to an `BinaryOp` message.
31
- message.kind.subscript_op = subscript_op_message
32
-
33
- # NOTE: Import a module within a local scope to fix a circular import.
34
- # - https://stackoverflow.com/questions/59462679/design-of-python-conditional-imports
35
- # - https://medium.com/@hamana.hadrien/so-you-got-a-circular-import-in-python-e9142fe10591
36
- from jijmodeling.protobuf.to_protobuf.expression_to_message import (
37
- expression_to_message,
38
- )
39
-
40
- # Set the target array object.
41
- message.children.append(expression_to_message(subscript_op.variable))
42
-
43
- # Set the subscripts.
44
- message.children.extend(
45
- [expression_to_message(expr) for expr in subscript_op.subscripts]
46
- )
47
-
48
- return message
@@ -1,36 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Union
4
-
5
- from jijmodeling.expression.condition import Condition
6
- from jijmodeling.expression.expression import Expression
7
- from jijmodeling.expression.variables.variable import Range
8
- from jijmodeling.problem.problem import Problem
9
- from jijmodeling.protobuf.to_protobuf.add_header_to_message import add_header_to_message
10
- from jijmodeling.protobuf.to_protobuf.expression_to_message import expression_to_message
11
- from jijmodeling.protobuf.to_protobuf.problem_to_message import problem_to_message
12
-
13
-
14
- def to_protobuf(object: Union[Expression, Range, Condition, Problem]) -> bytes:
15
- """
16
- Convert a JijModeling's object to a bytes object serialized by protobuf.
17
-
18
- Args:
19
- expr (Expression): a instance object of the `Expression` class
20
-
21
- Raises:
22
- TypeError: The error raises if the instance object cannot be converted to a protobuf object
23
-
24
- Returns:
25
- bytes: a bytes object
26
- """
27
- if isinstance(object, (Expression, Range, Condition)):
28
- message = add_header_to_message(expression_to_message(object))
29
- return bytes(message)
30
- elif isinstance(object, Problem):
31
- message = add_header_to_message(problem_to_message(object))
32
- return bytes(message)
33
- else:
34
- raise TypeError(
35
- f"{object.__class__.__name__} is not an {Expression.__name__} instance object."
36
- )
@@ -1,58 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import jijmodeling_schema as pb
4
-
5
- from jijmodeling.expression.mathfunc import (
6
- AbsoluteValue,
7
- Ceil,
8
- Floor,
9
- Log2,
10
- UnaryOperator,
11
- )
12
-
13
-
14
- def unary_op_to_message(unary_op: UnaryOperator) -> pb.Expression:
15
- """
16
- Convert a `UnaryOperator` object to an `Expression` message.
17
-
18
- Args:
19
- unary_op (UnaryOperator): a `UnaryOperator` object
20
-
21
- Returns:
22
- pb.Expression: an `Expression` message
23
- """
24
- # Create an empty `UnaryOp` message.
25
- unary_op_message = pb.UnaryOp()
26
-
27
- # Set the kind of the unary operator node.
28
- if type(unary_op) is AbsoluteValue:
29
- unary_op_message.kind = pb.UnaryOpKind.ABS
30
- elif type(unary_op) is Ceil:
31
- unary_op_message.kind = pb.UnaryOpKind.CEIL
32
- elif type(unary_op) is Floor:
33
- unary_op_message.kind = pb.UnaryOpKind.FLOOR
34
- elif type(unary_op) is Log2:
35
- unary_op_message.kind = pb.UnaryOpKind.LOG2
36
- else:
37
- raise TypeError(f"{unary_op.__class__.__name__} is not supported")
38
-
39
- # Create an empty `Expression` message.
40
- message = pb.Expression()
41
-
42
- # Set the id that the `Expression` object has.
43
- message.id = unary_op.uuid
44
-
45
- # Set the kind of nodes to an `UnaryOp` message.
46
- message.kind.unary_op = unary_op_message
47
-
48
- # NOTE: Import a module within a local scope to fix a circular import.
49
- # - https://stackoverflow.com/questions/59462679/design-of-python-conditional-imports
50
- # - https://medium.com/@hamana.hadrien/so-you-got-a-circular-import-in-python-e9142fe10591
51
- from jijmodeling.protobuf.to_protobuf.expression_to_message import (
52
- expression_to_message,
53
- )
54
-
55
- # Set the operand of the `UnaryOperator` object.
56
- message.children.append(expression_to_message(unary_op.operand))
57
-
58
- return message
@@ -1,33 +0,0 @@
1
- from pkgutil import extend_path
2
-
3
- __path__ = extend_path(__path__, __name__)
4
-
5
- import jijmodeling.sampleset.evaluation as evaluation
6
- import jijmodeling.sampleset.measuring_time as measuring_time
7
- import jijmodeling.sampleset.record as record
8
- import jijmodeling.sampleset.sampleset as sampleset
9
- import jijmodeling.sampleset.solving_time as solving_time
10
- import jijmodeling.sampleset.system_time as system_time
11
-
12
- from jijmodeling.sampleset.evaluation import Evaluation
13
- from jijmodeling.sampleset.measuring_time import MeasuringTime
14
- from jijmodeling.sampleset.record import Record
15
- from jijmodeling.sampleset.sampleset import SampleSet, concatenate
16
- from jijmodeling.sampleset.solving_time import SolvingTime
17
- from jijmodeling.sampleset.system_time import SystemTime
18
-
19
- __all__ = [
20
- "evaluation",
21
- "measuring_time",
22
- "record",
23
- "sampleset",
24
- "solving_time",
25
- "system_time",
26
- "SampleSet",
27
- "Record",
28
- "Evaluation",
29
- "MeasuringTime",
30
- "SolvingTime",
31
- "SystemTime",
32
- "concatenate",
33
- ]
@@ -1,288 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from dataclasses import asdict, dataclass, field
4
- from jijmodeling.type_annotations import (
5
- ForallIndexType,
6
- ForallValuesType,
7
- ConstraintExpressionValuesType,
8
- )
9
- from typing import Dict, List, Optional, Tuple, Union
10
-
11
- import numpy as np
12
- import pandas as pd
13
-
14
-
15
- @dataclass
16
- class Evaluation:
17
- """Schema for results of evaluating solutions.
18
-
19
- Attributes:
20
- energy (List[float]): a list of values of energy.
21
- objective (Optional[List[float]], optional): a list of values of objective function. Defaults to None.
22
- constraint_violations (Optional[Dict[str, List[float]]], optional): a list of constraint violations. A key is the name of a constraint. A value is cost of a constraint. Defaults to None.
23
- constraint_forall (Optional[ForallIndexType], optional): a list of indices of forall constraints. Defaults to None.
24
- constraint_values (Optional[List[ForallValuesType]], optional): a list of values of forall constraints. Defaults to None.
25
- penalty (Optional[Dict[str, List[float]]], optional): a list of costs of penalty terms. A key is the name of a penalty. A value is cost of a penalty term. Defaults to None.
26
- """
27
-
28
- energy: Optional[List[float]] = None
29
- objective: Optional[List[float]] = None
30
- constraint_violations: Optional[Dict[str, List[float]]] = None
31
- constraint_forall: Optional[ForallIndexType] = field(default=None, repr=False)
32
- constraint_values: Optional[List[ForallValuesType]] = field(
33
- default=None, repr=False
34
- )
35
- penalty: Optional[Dict[str, List[float]]] = None
36
-
37
- def __post_init__(self):
38
- self._current_index = 0
39
-
40
- def __len__(self) -> int:
41
- """
42
- Perform the operation __len__.
43
- """
44
- if self.energy is None:
45
- return 0
46
- else:
47
- return len(self.energy)
48
-
49
- def __iter__(self):
50
- return self
51
-
52
- def __next__(self):
53
- if self.energy is None:
54
- raise StopIteration()
55
- else:
56
- if self._current_index == len(self.energy):
57
- self._current_index = 0
58
- raise StopIteration()
59
- ret = self[self._current_index]
60
- self._current_index += 1
61
- return ret
62
-
63
- def __getitem__(
64
- self, item: Union[int, slice, List[int], Tuple[int], np.ndarray]
65
- ) -> Evaluation:
66
- """Perform the operation __getitem__.
67
-
68
- Args:
69
- item (Union[int, slice, List[int], Tuple[int], np.ndarray]): Index of evaluation metrics.
70
-
71
- Returns:
72
- Evaluation: Evaluation object.
73
- """
74
-
75
- def _slice(start: int, stop: int, step: Optional[int] = None) -> Evaluation:
76
- energy = None if self.energy is None else self.energy[start:stop:step]
77
- objective = (
78
- None if self.objective is None else self.objective[start:stop:step]
79
- )
80
- constraint_violations = (
81
- None
82
- if self.constraint_violations is None
83
- else {
84
- label: constraint_violations[start:stop:step]
85
- for label, constraint_violations in self.constraint_violations.items()
86
- }
87
- )
88
- constraint_values = (
89
- None
90
- if self.constraint_values is None
91
- else self.constraint_values[start:stop:step]
92
- )
93
- penalty = (
94
- None
95
- if self.penalty is None
96
- else {
97
- label: penalty[start:stop:step]
98
- for label, penalty in self.penalty.items()
99
- }
100
- )
101
-
102
- return Evaluation(
103
- energy=energy,
104
- objective=objective,
105
- constraint_violations=constraint_violations,
106
- constraint_forall=self.constraint_forall,
107
- constraint_values=constraint_values,
108
- penalty=penalty,
109
- )
110
-
111
- if isinstance(item, int):
112
- start, stop, step = item, item + 1, None
113
- return _slice(start, stop, step)
114
- elif isinstance(item, slice):
115
- start, stop, step = item.start, item.stop, item.step
116
- return _slice(start, stop, step)
117
- elif isinstance(item, (list, tuple, np.ndarray)):
118
- item = np.array(item) if len(item) else np.array([], dtype=int)
119
- if item.dtype == int or item.dtype == bool:
120
- energy = (
121
- None
122
- if self.energy is None
123
- else np.array(self.energy)[item].tolist()
124
- )
125
- objective = (
126
- None
127
- if self.objective is None
128
- else np.array(self.objective)[item].tolist()
129
- )
130
- constraint_violations = (
131
- None
132
- if self.constraint_violations is None
133
- else {
134
- label: np.array(constraint_violations)[item].tolist()
135
- for label, constraint_violations in self.constraint_violations.items()
136
- }
137
- )
138
- constraint_values = (
139
- None
140
- if self.constraint_values is None
141
- else np.array(self.constraint_values)[item].tolist()
142
- )
143
- penalty = (
144
- None
145
- if self.penalty is None
146
- else {
147
- label: np.array(penalty)[item].tolist()
148
- for label, penalty in self.penalty.items()
149
- }
150
- )
151
- return Evaluation(
152
- energy=energy,
153
- objective=objective,
154
- constraint_violations=constraint_violations,
155
- constraint_forall=self.constraint_forall,
156
- constraint_values=constraint_values,
157
- penalty=penalty,
158
- )
159
- else:
160
- raise IndexError(f'Element of "{item}" must be int or bool.')
161
- else:
162
- raise IndexError(
163
- f'Type of index "{item}" must be int, slice, list[int], tuple[int, ...] or 1d numpy.ndarray.'
164
- )
165
-
166
- @property
167
- def constraint_expr_values(self) -> List[ConstraintExpressionValuesType] | None:
168
- """
169
- Values for each constraint. The values are stored in `Dict[Tuple[int, ...], float]` for each condition expanded by `forall`.
170
- """
171
- if self.constraint_forall is None:
172
- return None
173
- if self.constraint_values is None:
174
- return None
175
-
176
- expr_values = []
177
- for v in self.constraint_values:
178
- expr_values.append(
179
- {
180
- const_name: {
181
- tuple(i): vi
182
- for i, vi in zip(
183
- self.constraint_forall[const_name], v[const_name]
184
- )
185
- }
186
- for const_name in self.constraint_forall
187
- }
188
- )
189
- return expr_values
190
-
191
- def to_pandas_dataframe(self) -> pd.DataFrame:
192
- """Convert Evaluation object to pandas.DataFrame object.
193
-
194
- Returns:
195
- pandas.DataFrame: pandas.DataFrame object.
196
- """
197
-
198
- evaluation = asdict(self)
199
-
200
- if evaluation["constraint_violations"]:
201
- constraint_violations = {
202
- f"constraint_violation[{k}]": v
203
- for k, v in evaluation.pop("constraint_violations").items()
204
- }
205
- else:
206
- constraint_violations = {}
207
- del evaluation["constraint_violations"]
208
- evaluation.update(constraint_violations)
209
- evaluation["constraint_forall"] = [self.constraint_forall] * len(self)
210
-
211
- if self.penalty:
212
- penalty = {f"penalty[{k}]": v for k, v in evaluation.pop("penalty").items()}
213
- else:
214
- penalty = {}
215
- del evaluation["penalty"]
216
- evaluation.update(penalty)
217
-
218
- return pd.DataFrame(evaluation)
219
-
220
- @classmethod
221
- def from_serializable(cls, obj: dict):
222
- """To Evaluation object from Dict of SampleSet.
223
-
224
- Args:
225
- obj (Dict): Dict of Evaluation.
226
-
227
- Returns:
228
- Evaluation: Evaluation obj.
229
- """
230
-
231
- return cls(
232
- energy=obj.get("energy"),
233
- objective=obj.get("objective"),
234
- constraint_violations=obj.get("constraint_violations"),
235
- constraint_forall=obj.get("constraint_forall"),
236
- constraint_values=obj.get("constraint_values"),
237
- penalty=obj.get("penalty"),
238
- )
239
-
240
- def to_serializable(self):
241
- return asdict(self)
242
-
243
- def _extend(self, other: Evaluation):
244
- if isinstance(other.energy, list):
245
- # Concatenate energy
246
- if self.energy is None:
247
- self.energy = other.energy
248
- else:
249
- self.energy.extend(other.energy)
250
-
251
- # Concatenate objective
252
- if isinstance(other.objective, list):
253
- if self.objective is None:
254
- self.objective = other.objective
255
- else:
256
- self.objective.extend(other.objective)
257
-
258
- # Concatenate constraint_violations
259
- if isinstance(other.constraint_violations, dict):
260
- if self.constraint_violations is None:
261
- self.constraint_violations = other.constraint_violations
262
- else:
263
- for (
264
- con_label,
265
- constraint_violation,
266
- ) in other.constraint_violations.items():
267
- self.constraint_violations[con_label].extend(constraint_violation)
268
-
269
- # Overwrite constraint_forall
270
- # Since SampleSet assumes that it does not contain solutions for different problem or instance data,
271
- # the index of forall constraints (constraint_forall) are the same between the original SampleSet(self)
272
- # and combined SampleSet(other)."
273
- if isinstance(other.constraint_forall, dict):
274
- self.constraint_forall = other.constraint_forall
275
-
276
- if isinstance(other.constraint_values, list):
277
- if self.constraint_values is None:
278
- self.constraint_values = other.constraint_values
279
- else:
280
- self.constraint_values.extend(other.constraint_values)
281
-
282
- # Concatenate penalty
283
- if isinstance(other.penalty, dict):
284
- if self.penalty is None:
285
- self.penalty = other.penalty
286
- else:
287
- for (pane_label, pena) in other.penalty.items():
288
- self.penalty[pane_label].extend(pena)