Index: geniuswebcore/geniusweb/bidspace/BidsWithUtility.py
===================================================================
--- geniuswebcore/geniusweb/bidspace/BidsWithUtility.py	(revision 88)
+++ geniuswebcore/geniusweb/bidspace/BidsWithUtility.py	(revision 89)
@@ -1,8 +1,7 @@
 
 
-from geniusweb.issuevalue.Bid import Bid
-from geniusweb.issuevalue.Domain import Domain
-from geniusweb.issuevalue.Value import Value
-from geniusweb.profile.utilityspace.LinearAdditive import LinearAdditive
+from decimal import Decimal
+from typing import List, Dict
+
 from tudelft.utilities.immutablelist.AbstractImmutableList import AbstractImmutableList
 from tudelft.utilities.immutablelist.FixedList import FixedList
@@ -11,14 +10,16 @@
 from tudelft.utilities.immutablelist.MapList import MapList
 from tudelft.utilities.immutablelist.Tuple import Tuple
-from typing import List, Dict
+
+from geniusweb.bidspace.Interval import Interval
 from geniusweb.bidspace.IssueInfo import IssueInfo
-from geniusweb.bidspace.Interval import Interval
+from geniusweb.issuevalue.Bid import Bid
+from geniusweb.issuevalue.Domain import Domain
+from geniusweb.issuevalue.Value import Value
+from geniusweb.profile.utilityspace.LinearAdditive import LinearAdditive
 from geniusweb.utils import val
-from decimal import Decimal
-
-class BidsWithUtility :
-	'''
-	WARNING DO NOT USE, NOT YET WORKING CORRECTLY
-	
+
+
+class BidsWithUtility:
+	'''
 	Tool class containing functions dealing with utilities of all bids in a given
 	{@link LinearAdditive}. This class caches previously computed values to
@@ -31,6 +32,5 @@
 	'''
 
-
-	def __init__(self, issuesInfo:List[IssueInfo] , precision:int ) :
+	def __init__(self, issuesInfo:List[IssueInfo] , precision:int):
 		'''
 		@param issuesInfo List of the relevant issues (in order of relevance) and
@@ -55,5 +55,5 @@
 		                 the maximum.
 		'''
-		if issuesInfo == None or len(issuesInfo)==0:
+		if issuesInfo == None or len(issuesInfo) == 0:
 			raise ValueError("sortedissues list must contain at least 1 element")
 		self._issueInfo = issuesInfo;
@@ -62,5 +62,5 @@
 	 	# value of that call.
 
-		self._cache:Dict[Tuple[int, Interval], ImmutableList[Bid]]  = {}
+		self._cache:Dict[Tuple[int, Interval], ImmutableList[Bid]] = {}
 
 	@staticmethod
@@ -77,6 +77,5 @@
 		return BidsWithUtility(BidsWithUtility._getInfo(space, precision), precision);
 
-
-	def getRange(self) ->Interval :
+	def getRange(self) -> Interval:
 		'''
 		@return the (rounded) utility {@link Interval} of this space: minimum and
@@ -85,5 +84,5 @@
 		return self._getRange(len(self._issueInfo) - 1)
 
-	def getBids(self, range: Interval) -> ImmutableList[Bid] :
+	def getBids(self, range: Interval) -> ImmutableList[Bid]:
 		'''
 		@param range the minimum and maximum utility required of the bids. to be
@@ -94,8 +93,8 @@
 		return self._get(len(self._issueInfo) - 1, range.round(self._precision));
 
-	def getInfo(self) -> List[IssueInfo] :
+	def getInfo(self) -> List[IssueInfo]:
 		return self._issueInfo.copy()
 
-	def getExtremeBid(self, isMax:bool) ->Bid :
+	def getExtremeBid(self, isMax:bool) -> Bid:
 		'''
 		@param isMax the extreme bid required
@@ -103,10 +102,10 @@
 		        isMax=true
 		'''
-		map:Dict[str, Value]  = {}
+		map:Dict[str, Value] = {}
 		for info in self._issueInfo:
 			map[info.getName()] = info.getExtreme(isMax)
 		return Bid(map)
 
-	def _get(self, n:int , goal:Interval) -> ImmutableList[Bid] :
+	def _get(self, n:int , goal:Interval) -> ImmutableList[Bid]:
 		'''
 		Create partial BidsWithUtil list considering only issues 0..n, with
@@ -132,9 +131,9 @@
 
 		result = self._checkedGet(n, goal)
-		self._cache[cachetuple]=result
+		self._cache[cachetuple] = result
 		return result
 
 	@staticmethod
-	def _getInfo(space2:LinearAdditive , precision:int) -> List[IssueInfo] :
+	def _getInfo(space2:LinearAdditive , precision:int) -> List[IssueInfo]:
 		dom = space2.getDomain()
 		return [IssueInfo(issue, dom.getValues(issue), \
@@ -142,7 +141,6 @@
 				space2.getWeight(issue), precision) \
 				for issue in dom.getIssues()]
-		
-
-	def _checkedGet(self, n:int, goal:Interval ) -> ImmutableList[Bid] :
+
+	def _checkedGet(self, n:int, goal:Interval) -> ImmutableList[Bid]:
 		info = self._issueInfo[n]
 		# issue is the first issuesWithRange.
@@ -153,5 +151,5 @@
 
 		# make new list, joining all sub-lists
-		fulllist:ImmutableList[Bid]  = FixedList([])
+		fulllist:ImmutableList[Bid] = FixedList([])
 		for val in info.getValues():
 			weightedutil = info.getWeightedUtil(val)
@@ -173,5 +171,5 @@
 		return MapList[Bid, Bid](lambda pbid: pbid.merge(bid), partialbids)
 
-	def _getRange(self,  n:int) ->Interval :
+	def _getRange(self, n:int) -> Interval:
 		'''
 		@param n the maximum issuevalue utility to include. Use n=index of last
@@ -182,14 +180,16 @@
 		        {@link #precision}
 		'''
-		value = Interval(Decimal(0),Decimal(0))
-		for i in range(0,n+1): # include end point
+		value = Interval(Decimal(0), Decimal(0))
+		for i in range(0, n + 1):  # include end point
 			value = value.add(self._issueInfo[i].getInterval())
 		return value
 
+
 class OneIssueSubset (AbstractImmutableList[Bid]):
 	'''
 	List of all one-issue bids that have utility inside given interval.
 	'''
-	def __init__(self, info:IssueInfo , interval:Interval ) :
+
+	def __init__(self, info:IssueInfo , interval:Interval):
 		'''
 		@param info     the {@link IssueInfo}
@@ -200,10 +200,10 @@
 		self._size = info._subsetSize(interval)
 
-	#Override
-	def get(self, index:int) ->Bid :
+	# Override
+	def get(self, index:int) -> Bid:
 		return Bid({self._info.getName():
 				self._info._subset(self._interval)[index]})
 
-	#Override
-	def size(self) ->int:
+	# Override
+	def size(self) -> int:
 		return self._size
