Skip to main content

HumanCompiler-oriented scheduling models, fixtures, and planning solvers

Project description

HumanCompiler Scheduler

HumanCompiler Scheduler is a small Python package for HumanCompiler-oriented planning experiments. It provides plain dataclass models, YAML fixture loading, review tools, a daily timeline solver, and a weekly task selection solver that can be called from HumanCompiler adapter code without depending on HumanCompiler database models.

The distribution name is humancompiler-scheduler; the import package is humancompiler_scheduler.

Installation

Install from PyPI after the first release:

uv add humancompiler-scheduler

Weekly task selection uses OR-Tools CP-SAT. Install the optional extra in environments that call plan_weekly_selection:

uv add 'humancompiler-scheduler[cp-sat]'

Or install the current repository checkout:

uv pip install -e .

For weekly task selection from a checkout, include the same extra:

uv pip install -e '.[cp-sat]'

HumanCompiler Integration API

HumanCompiler-oriented scheduling models live under humancompiler_scheduler.human. Use plan_daily_schedule for daily scheduling and plan_weekly_selection for weekly task selection as stable adapter-facing entry points. The weekly entry point requires the cp-sat extra shown above.

from humancompiler_scheduler.human import plan_daily_schedule

report = plan_daily_schedule(
    {
        "date": "2026-05-20",
        "availability_windows": [
            {"start": "09:00", "end": "12:00", "work_kind": "focused_work"},
            {"start": "13:00", "end": "18:00", "work_kind": "light_work"},
        ],
        "fixed_events": [
            {"title": "Team sync", "start": "11:00", "end": "11:30"},
        ],
        "tasks": [
            {
                "id": "proposal",
                "title": "Draft proposal",
                "remaining_minutes": 90,
                "priority": 1,
                "work_kind": "focused_work",
                "source": "task",
            },
        ],
        "solver_config": {
            "kind_match_score": 8,
            "kind_mismatch_score": 1,
        },
    }
)

for block in report.plan.blocks:
    print(block.task_id, block.start, block.end)
from humancompiler_scheduler.human import plan_weekly_selection

result = plan_weekly_selection(
    {
        "tasks": [
            {
                "id": "proposal",
                "title": "Draft proposal",
                "hours": 10.0,
                "priority_score": 9.0,
                "project_id": "project-alpha",
            },
        ],
        "project_allocations": [
            {
                "project_id": "project-alpha",
                "target_hours": 5.0,
                "priority_weight": 1.0,
            },
        ],
        "total_capacity_hours": 5.0,
    }
)

print(result.selected_task_ids)
print(result.assigned_task_hours)

The lower-level fixture helpers and solver functions remain available for review tooling and experiments.

Known Limitations

The current release intentionally keeps the solver compact. It does not yet:

  • insert break blocks automatically;
  • preserve prior scheduled blocks or model current-task interruptibility for full rolling reschedule.

Fixture Review

Run one fixture:

uv run python examples/human_daily_demo.py samples/human/daily_basic.yaml

Run a batch review and save a snapshot:

uv run python examples/human_daily_review.py samples/human/*.yaml --format markdown --output human_daily_review.md

The sample review fixtures share the same synthetic HumanCompiler task database at samples/human/data/humancompiler_common_database.yaml. The fixture files vary the available time windows and constraints, not the underlying task set.

Apply a shared solver config override to every fixture in the review:

uv run python examples/human_daily_review.py samples/human/*.yaml --config review_config.yaml

Documentation

Sphinx documentation lives in docs/.

uv run --extra docs sphinx-build -b html docs docs/_build/html

Open docs/_build/html/index.html after the build completes.

Releasing

Releases are tag-driven. Update CHANGELOG.md, create a semantic version tag such as vX.Y.Z, and push it. The release workflow builds the package, checks the distribution metadata, publishes to PyPI through Trusted Publishing, and creates GitHub release notes from the matching changelog section.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

humancompiler_scheduler-0.3.1.tar.gz (160.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

humancompiler_scheduler-0.3.1-py3-none-any.whl (33.3 kB view details)

Uploaded Python 3

File details

Details for the file humancompiler_scheduler-0.3.1.tar.gz.

File metadata

  • Download URL: humancompiler_scheduler-0.3.1.tar.gz
  • Upload date:
  • Size: 160.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for humancompiler_scheduler-0.3.1.tar.gz
Algorithm Hash digest
SHA256 147e09668b5253aa68ce48e30eb27dcd9ee84c9dcb8f1144733781a314c9115c
MD5 f71c29dacd3bf2867bbe0e16d99a9190
BLAKE2b-256 4989a9daf36b8f52a077b7a7ecc22c1d6d7234056d2b5115d8a03bbf0be9577c

See more details on using hashes here.

Provenance

The following attestation bundles were made for humancompiler_scheduler-0.3.1.tar.gz:

Publisher: release.yml on masa10-f/Scheduler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file humancompiler_scheduler-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for humancompiler_scheduler-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1ea1b50ce7951db10a53ea35549739458e0b37cdd522ae6143d1ad45ab5adf4
MD5 c0b051533137ef56e81fed5cbdb182a3
BLAKE2b-256 c91784903b3e9a1dcad8791b73ac09336e602f0b5bcc87cb7abb08b632daf632

See more details on using hashes here.

Provenance

The following attestation bundles were made for humancompiler_scheduler-0.3.1-py3-none-any.whl:

Publisher: release.yml on masa10-f/Scheduler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page