File tree Expand file tree Collapse file tree 6 files changed +6
-43
lines changed Expand file tree Collapse file tree 6 files changed +6
-43
lines changed Original file line number Diff line number Diff line change 106106 function, the graph cannot be modified, and therefore no more nodes can be
107107 added using :meth: `~TopologicalSorter.add `.
108108
109- A :exc: `ValueError ` will be raised if the sort has been started by
110- :meth: `~.static_order ` or :meth: `~.get_ready `.
111-
112- .. versionchanged :: next
113-
114- ``prepare() `` can now be called more than once as long as the sort has
115- not started. Previously this raised :exc: `ValueError `.
116-
117109 .. method :: is_active()
118110
119111 Returns ``True `` if more progress can be made and ``False `` otherwise.
Original file line number Diff line number Diff line change @@ -607,15 +607,6 @@ getopt
607607* Add support for returning intermixed options and non-option arguments in order.
608608 (Contributed by Serhiy Storchaka in :gh: `126390 `.)
609609
610-
611- graphlib
612- --------
613-
614- * Allow :meth: `graphlib.TopologicalSorter.prepare ` to be called more than once
615- as long as sorting has not started.
616- (Contributed by Daniel Pope in :gh: `130914 `)
617-
618-
619610http
620611----
621612
Original file line number Diff line number Diff line change @@ -90,17 +90,13 @@ def prepare(self):
9090 still be used to obtain as many nodes as possible until cycles block more
9191 progress. After a call to this function, the graph cannot be modified and
9292 therefore no more nodes can be added using "add".
93-
94- Raise ValueError if nodes have already been passed out of the sorter.
95-
9693 """
97- if self ._npassedout > 0 :
98- raise ValueError ("cannot prepare() after starting sort " )
94+ if self ._ready_nodes is not None :
95+ raise ValueError ("cannot prepare() more than once " )
9996
100- if self ._ready_nodes is None :
101- self ._ready_nodes = [
102- i .node for i in self ._node2info .values () if i .npredecessors == 0
103- ]
97+ self ._ready_nodes = [
98+ i .node for i in self ._node2info .values () if i .npredecessors == 0
99+ ]
104100 # ready_nodes is set before we look for cycles on purpose:
105101 # if the user wants to catch the CycleError, that's fine,
106102 # they can continue using the instance to grab as many
Original file line number Diff line number Diff line change @@ -140,21 +140,9 @@ def test_calls_before_prepare(self):
140140 def test_prepare_multiple_times (self ):
141141 ts = graphlib .TopologicalSorter ()
142142 ts .prepare ()
143- ts .prepare ()
144-
145- def test_prepare_after_pass_out (self ):
146- ts = graphlib .TopologicalSorter ({'a' : 'bc' })
147- ts .prepare ()
148- self .assertEqual (set (ts .get_ready ()), {'b' , 'c' })
149- with self .assertRaisesRegex (ValueError , r"cannot prepare\(\) after starting sort" ):
143+ with self .assertRaisesRegex (ValueError , r"cannot prepare\(\) more than once" ):
150144 ts .prepare ()
151145
152- def test_prepare_cycleerror_each_time (self ):
153- ts = graphlib .TopologicalSorter ({'a' : 'b' , 'b' : 'a' })
154- for attempt in range (1 , 4 ):
155- with self .assertRaises (graphlib .CycleError , msg = f"{ attempt = } " ):
156- ts .prepare ()
157-
158146 def test_invalid_nodes_in_done (self ):
159147 ts = graphlib .TopologicalSorter ()
160148 ts .add (1 , 2 , 3 , 4 )
Original file line number Diff line number Diff line change @@ -1483,7 +1483,6 @@ Michael Pomraning
14831483Martin Pool
14841484Iustin Pop
14851485Claudiu Popa
1486- Daniel Pope
14871486Nick Pope
14881487John Popplewell
14891488Matheus Vieira Portela
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments