Skip to content

v0.4.0 — The data date and the calendars, read the way P6 schedules from them

Latest

Choose a tag to compare

@danafitkowski danafitkowski released this 13 Oct 13:43

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_xer fills a blank PROJECT.last_recalc_date from plan_start_date in 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_cnt declares. 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 date parse_xer changed, with filed_data_date when a filed date was lifted.
  • empty_record and declared_hours_per_day on an empty record's calendar-map entry. calendar_shift_hours does 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.