python-sat 1.9.dev14__tar.gz → 1.9.dev15__tar.gz

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 (120) hide show
  1. {python_sat-1.9.dev14/python_sat.egg-info → python_sat-1.9.dev15}/PKG-INFO +1 -1
  2. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/hitman.py +2 -7
  3. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/lsu.py +1 -1
  4. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/__init__.py +1 -1
  5. {python_sat-1.9.dev14 → python_sat-1.9.dev15/python_sat.egg-info}/PKG-INFO +1 -1
  6. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/python_sat.egg-info/SOURCES.txt +2 -0
  7. python_sat-1.9.dev15/tests/test_hitman.py +31 -0
  8. python_sat-1.9.dev15/tests/test_lsu.py +15 -0
  9. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/LICENSE.txt +0 -0
  10. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/MANIFEST.in +0 -0
  11. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/README.rst +0 -0
  12. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/allies/__init__.py +0 -0
  13. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/allies/approxmc.py +0 -0
  14. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/allies/unigen.py +0 -0
  15. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/bitwise.hh +0 -0
  16. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/card.hh +0 -0
  17. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/clset.hh +0 -0
  18. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/common.hh +0 -0
  19. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/itot.hh +0 -0
  20. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/ladder.hh +0 -0
  21. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/mto.hh +0 -0
  22. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/pairwise.hh +0 -0
  23. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/ptypes.hh +0 -0
  24. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/pycard.cc +0 -0
  25. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/seqcounter.hh +0 -0
  26. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/sortcard.hh +0 -0
  27. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/cardenc/utils.hh +0 -0
  28. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/__init__.py +0 -0
  29. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/bbscan.py +0 -0
  30. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/bica.py +0 -0
  31. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/fm.py +0 -0
  32. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/genhard.py +0 -0
  33. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/lbx.py +0 -0
  34. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/mcsls.py +0 -0
  35. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/models.py +0 -0
  36. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/musx.py +0 -0
  37. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/optux.py +0 -0
  38. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/primer.py +0 -0
  39. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/rc2.py +0 -0
  40. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/examples/usage.py +0 -0
  41. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_parse.cc +0 -0
  42. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_plus.cc +0 -0
  43. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_plus.hh +0 -0
  44. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_py.hh +0 -0
  45. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_scan.hh +0 -0
  46. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_weight.cc +0 -0
  47. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pf_weight.hh +0 -0
  48. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pyformula.cc +0 -0
  49. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/formula/pyformula.hh +0 -0
  50. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/_fileio.py +0 -0
  51. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/_utils.py +0 -0
  52. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/card.py +0 -0
  53. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/engines.py +0 -0
  54. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/formula.py +0 -0
  55. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/integer.py +0 -0
  56. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/pb.py +0 -0
  57. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/process.py +0 -0
  58. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/pysat/solvers.py +0 -0
  59. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/python_sat.egg-info/dependency_links.txt +0 -0
  60. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/python_sat.egg-info/requires.txt +0 -0
  61. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/python_sat.egg-info/top_level.txt +0 -0
  62. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/requirements.txt +0 -0
  63. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/setup.cfg +0 -0
  64. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/setup.py +0 -0
  65. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/cadical103.tar.gz +0 -0
  66. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/cadical153.tar.gz +0 -0
  67. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/cadical195.tar.gz +0 -0
  68. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/cadical300.tar.gz +0 -0
  69. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/glucose30.tar.gz +0 -0
  70. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/glucose41.tar.gz +0 -0
  71. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/glucose421.tar.gz +0 -0
  72. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/lingeling.tar.gz +0 -0
  73. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/maplechrono.zip +0 -0
  74. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/maplecm.zip +0 -0
  75. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/maplesat.zip +0 -0
  76. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/mergesat3.tar.gz +0 -0
  77. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/minicard.tar.gz +0 -0
  78. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/minisat22.tar.gz +0 -0
  79. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/minisatgh.zip +0 -0
  80. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/cadical103.patch +0 -0
  81. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/cadical153.patch +0 -0
  82. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/cadical195.patch +0 -0
  83. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/cadical300.patch +0 -0
  84. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/glucose30.patch +0 -0
  85. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/glucose41.patch +0 -0
  86. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/glucose421.patch +0 -0
  87. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/gluecard30.patch +0 -0
  88. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/gluecard41.patch +0 -0
  89. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/kissat404.patch +0 -0
  90. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/lingeling.patch +0 -0
  91. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/maplechrono.patch +0 -0
  92. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/maplecm.patch +0 -0
  93. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/maplesat.patch +0 -0
  94. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/mergesat3.patch +0 -0
  95. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/minicard.patch +0 -0
  96. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/minisat22.patch +0 -0
  97. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/minisatep.patch +0 -0
  98. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/patches/minisatgh.patch +0 -0
  99. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/prepare.py +0 -0
  100. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/solvers/pysolvers.cc +0 -0
  101. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_accum_stats.py +0 -0
  102. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_atmost.py +0 -0
  103. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_atmost1.py +0 -0
  104. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_atmostk.py +0 -0
  105. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_boolengine.py +0 -0
  106. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_clausification.py +0 -0
  107. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_cnf.py +0 -0
  108. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_empty_extclause.py +0 -0
  109. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_encode_pb_conditional.py +0 -0
  110. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_equals1.py +0 -0
  111. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_formula_parsing.py +0 -0
  112. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_formula_unique.py +0 -0
  113. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_idpool.py +0 -0
  114. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_integer.py +0 -0
  115. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_oom.py +0 -0
  116. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_process.py +0 -0
  117. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_propagate.py +0 -0
  118. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_unique_model.py +0 -0
  119. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_unique_mus.py +0 -0
  120. {python_sat-1.9.dev14 → python_sat-1.9.dev15}/tests/test_warmstart.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-sat
3
- Version: 1.9.dev14
3
+ Version: 1.9.dev15
4
4
  Summary: A Python library for prototyping with SAT oracles
5
5
  Home-page: https://github.com/pysathq/pysat
6
6
  Author: Alexey Ignatiev, Joao Marques-Silva, Antonio Morgado
@@ -476,24 +476,19 @@ class Hitman(object):
476
476
 
477
477
  if no_obj is False:
478
478
  # a soft clause should be added for each new object
479
- new_obj = filter(lambda vid: abs(vid) not in self.oracle.vmap.e2i, clause)
479
+ new_obj = sorted(set(abs(vid) for vid in clause if abs(vid) not in self.oracle.vmap.e2i))
480
480
  else:
481
481
  # this is a native AtMostK constraint
482
482
  clause = [list(map(lambda a: self.idpool.id(a.obj) * (2 * a.sign - 1), clause[0])), clause[1]]
483
483
 
484
484
  if no_obj is False:
485
485
  # a soft clause should be added for each new object
486
- new_obj = filter(lambda vid: abs(vid) not in self.oracle.vmap.e2i, clause[0])
487
-
488
- # there may be duplicate literals if the constraint is weighted
489
- new_obj = list(set(new_obj))
486
+ new_obj = sorted(set(abs(vid) for vid in clause[0] if abs(vid) not in self.oracle.vmap.e2i))
490
487
 
491
488
  # adding the hard clause
492
489
  self.oracle.add_clause(clause)
493
490
 
494
491
  if no_obj is False:
495
- # some of the literals may also have the opposite polarity
496
- new_obj = [l if l in self.idpool.obj2id else -l for l in new_obj]
497
492
 
498
493
  if self.htype != 'sat':
499
494
  # new soft clauses
@@ -235,7 +235,7 @@ class LSU:
235
235
  self._assert_lt(self.cost)
236
236
 
237
237
  if is_sat:
238
- self.model = filter(lambda l: abs(l) <= self.formula.nv, self.model)
238
+ self.model = list(filter(lambda l: abs(l) <= self.formula.nv, self.model))
239
239
  if self.verbose:
240
240
  if self.found_optimum():
241
241
  print('s OPTIMUM FOUND')
@@ -10,7 +10,7 @@
10
10
 
11
11
  # current version
12
12
  #==============================================================================
13
- VERSION = (1, 9, 'dev', 14)
13
+ VERSION = (1, 9, 'dev', 15)
14
14
 
15
15
 
16
16
  # PEP440 Format
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-sat
3
- Version: 1.9.dev14
3
+ Version: 1.9.dev15
4
4
  Summary: A Python library for prototyping with SAT oracles
5
5
  Home-page: https://github.com/pysathq/pysat
6
6
  Author: Alexey Ignatiev, Joao Marques-Silva, Antonio Morgado
@@ -107,8 +107,10 @@ tests/test_encode_pb_conditional.py
107
107
  tests/test_equals1.py
108
108
  tests/test_formula_parsing.py
109
109
  tests/test_formula_unique.py
110
+ tests/test_hitman.py
110
111
  tests/test_idpool.py
111
112
  tests/test_integer.py
113
+ tests/test_lsu.py
112
114
  tests/test_oom.py
113
115
  tests/test_process.py
114
116
  tests/test_propagate.py
@@ -0,0 +1,31 @@
1
+ from pysat.examples.hitman import Atom, Hitman
2
+
3
+
4
+ def test_add_hard_registers_new_object_with_mcs_enumerators():
5
+ for htype in ('lbx', 'mcsls'):
6
+ with Hitman(bootstrap_with=[['first']], htype=htype) as hitman:
7
+ hitman.add_hard([Atom('second')])
8
+
9
+ assert sorted(hitman.get()) == ['first', 'second']
10
+
11
+
12
+ def test_add_hard_registers_weighted_new_objects_with_rc2():
13
+ weights = {'base': 1, 'expensive': 10, 'cheap': 1}
14
+
15
+ with Hitman(bootstrap_with=[['base']], weights=weights,
16
+ htype='sorted') as hitman:
17
+ hitman.add_hard([Atom('expensive'), Atom('cheap')], weights=weights)
18
+
19
+ assert sorted(hitman.get()) == ['base', 'cheap']
20
+
21
+
22
+ def test_add_hard_registers_new_objects_with_sat():
23
+ with Hitman(bootstrap_with=[['base']], htype='sat',
24
+ solver='mgh') as hitman:
25
+ hitman.add_hard([Atom('left'), Atom('right')])
26
+
27
+ result = hitman.get()
28
+
29
+ assert 'base' in result
30
+ assert len(set(result) & {'left', 'right'}) == 1
31
+ assert set(hitman.oracle.vmap.e2i) == {1, 2, 3}
@@ -0,0 +1,15 @@
1
+ from pysat.examples.lsu import LSU
2
+ from pysat.formula import WCNF
3
+
4
+
5
+ def test_get_model_returns_reusable_list():
6
+ formula = WCNF()
7
+ formula.append([1], weight=1)
8
+
9
+ with LSU(formula, solver='g3') as lsu:
10
+ assert lsu.solve() is True
11
+
12
+ model = lsu.get_model()
13
+
14
+ assert isinstance(model, list)
15
+ assert lsu.get_model() == model
File without changes
File without changes