Skip to content

Commit ab38143

Browse files
committed
chore: ignore .env and document 3.1.x fixes in the 3.2.0 notes
- gitignore .env / .env.* (keep .env.example) to avoid committing secrets. - release notes: refine the import-migration table and add the #624/#625 and #627 bug-fix entries for the upcoming 3.2.0 release. Signed-off-by: Fernando Macedo <fgmacedo@gmail.com>
1 parent 6755433 commit ab38143

2 files changed

Lines changed: 38 additions & 7 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,8 @@ tmp/
8585

8686
# Local specs
8787
specs/
88+
89+
# Environment files (secrets)
90+
.env
91+
.env.*
92+
!.env.example

docs/releases/3.2.0.md

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,20 @@ The experimental `statemachine.io.scxml` internals were promoted into a format-n
7474
IO core (see *What's new* below). Code that imported implementation modules directly must
7575
update its imports:
7676

77-
| Before | After |
77+
| Before (3.1.x) | After (3.2.0) |
7878
|---|---|
7979
| `statemachine.io.scxml.schema` | `statemachine.io.model` |
80-
| `statemachine.io.scxml.datamodel` | `statemachine.io.evaluators` |
8180
| `statemachine.io.scxml.parser` | `statemachine.io.scxml.reader` |
8281
| generic helpers in `statemachine.io.scxml.actions` | `statemachine.io.actions` |
82+
| `protected_attrs` / `_eval` in `statemachine.io.scxml.actions` | `statemachine.io.evaluators` |
8383
| `EventDataWrapper` etc. in `statemachine.io.scxml.actions` | `statemachine.io.system_variables` |
8484
| `SCXMLInvoker` in `statemachine.io.scxml.invoke` | `Invoker` in `statemachine.io.invoke` |
85-
| `statemachine.io.processor.GenericProcessor` | `statemachine.io.interpreter.Interpreter` (+ `statemachine.io.builder`) |
8685

87-
`statemachine.io.scxml.processor.SCXMLProcessor` (now a thin `Interpreter` wrapper, minus
88-
the removed `parse_scxml_file` — use `io.load` for files) and
89-
`statemachine.io.create_machine_class_from_definition` keep their behavior.
86+
`statemachine.io.scxml.processor.SCXMLProcessor` (now a thin wrapper over the new
87+
format-neutral runtime, minus the removed `parse_scxml_file`; use `io.load` for files) and
88+
`statemachine.io.create_machine_class_from_definition` keep their behavior. The runtime
89+
itself moved into the new, SCXML-agnostic `statemachine.io.interpreter.Interpreter` and
90+
`statemachine.io.builder` (see *Architecture* below).
9091

9192
## What's new in 3.2.0
9293

@@ -145,4 +146,29 @@ python-statemachine[io] # both of the above
145146

146147
## Bug fixes in 3.2.0
147148

148-
TODO
149+
### Sibling compound states with same-named children no longer collide
150+
151+
A `StateChart` with sibling compound states whose children reuse the same local
152+
`id` (e.g. each region declares an `a` and a `b`) but carry distinct `value=`
153+
identifiers would collapse in the internal instance-state map, which was keyed by
154+
`state.id`. The duplicate ids overwrote each other, so dispatching an event
155+
resolved to the wrong `State` instance and raised `TransitionNotAllowed`.
156+
157+
Instance states are now keyed by `state.value` (globally unique, the canonical
158+
identifier already used by `states_map`), fixing dispatch for nested and parallel
159+
configurations that repeat child names.
160+
161+
[#624](https://github.com/fgmacedo/python-statemachine/issues/624),
162+
[#625](https://github.com/fgmacedo/python-statemachine/pull/625).
163+
164+
### Async `invoke` no longer cancels itself on its own `done.invoke`
165+
166+
When an async `invoke` completed and its `done.invoke` event triggered a
167+
transition out of the owning state, the cancel-on-exit path could cancel the
168+
invocation's own task while it was still running. The `CancelledError` surfaced at
169+
the next `await`, so the target state's `on_enter` callback never finished.
170+
171+
The engine now skips self-cancellation when the invocation's task is the currently
172+
running task, letting the originating handler complete normally.
173+
174+
[#627](https://github.com/fgmacedo/python-statemachine/pull/627).

0 commit comments

Comments
 (0)