Repository navigation
A minor release. The data date and the calendars are read the way P6 schedules from them, each rule measured on Primavera P6 Professional 23.12.1's own F9 and each the one cpp-cpm-engine v2.10.1's parseXER applies.
Changed
- A blank data date is the project's planned start. P6 schedules "from the project data date, using the project start date as the initial data date".
parse_xerfills a blankPROJECT.last_recalc_datefromplan_start_datein place. A blank with no planned start stays blank. - A data date filed on an earlier day than the planned start is lifted to it, as P6 lifts it when it opens the project: with a data date of 28 August and a planned start of 1 September, P6 shows and schedules from 1 September. A planned start later the same day is left as filed.
- An empty calendar record is P6's internal Standard: Monday to Friday, 08:00-16:00, eight hours a day, no holidays, whatever
day_hr_cntdeclares. Records declaring 10, 6 and 24 hours ran the same 08:00-16:00 days on P6's F9. v0.3.0 gave such a record no working days and converted hours at the declared figure, so 40 hours on a record declaring 10 read as four days where P6 schedules five.
Added
data['data_date_filled']: one entry per project whose data dateparse_xerchanged, withfiled_data_datewhen a filed date was lifted.empty_recordanddeclared_hours_per_dayon an empty record's calendar-map entry.calendar_shift_hoursdoes not list it.resource_dependent_assignments(data): each TASKRSRC row as P6 schedules it on a resource dependent activity (the resource's calendar, remaining units over remaining units per hour, the remaining lag, Drive Activity Dates).
Why a minor release
Before 1.0 the minor number moves for a release that changes results a caller already reads: parse_xer's data date and get_calendar_map's entry for an empty record can change. Nothing moves for a project whose data date is filed on or after the day of its planned start, or for a calendar record that carries its week.
Testing
tests/test_p6_rules_2026_10_13.py, 14 synthetic tests, 11 of which fail on v0.3.0. pytest tests/: 130 tests across 13 files, 129 pass and the engine-parity test skips; all 130 pass with cpp-cpm-engine v2.10.1's python_reference on sys.path. CI 9/9 (Linux, macOS, Windows; Python 3.10, 3.11, 3.12).
Full notes: CHANGELOG.md.