)]}'
{
  "commit": "ea9e6e6a23b1069a561631e7dbf73eb4bb16fa81",
  "tree": "5e440dd52ac06d4aa6901f0a07dee18c2e5e2994",
  "parents": [
    "652c69437bbd67e0075648c2fd633eb318f1ee40"
  ],
  "author": {
    "name": "Henry Schreiner",
    "email": "HenrySchreinerIII@gmail.com",
    "time": "Fri Jul 31 14:17:21 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 31 14:17:21 2026 -0400"
  },
  "message": "feat: small command line helpers for quick tests (#4272)\n\n* feat: small command line helpers for quick tests\n\nAdd --cflags, --ldflags, --embed, and --file to the pybind11 command\nline tool, based on python-config. This makes quick one-off compiles\neasy:\n\n    c++ $(python3 -m pybind11 --file\u003dexample.cpp)\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* refactor: quote paths, clarify CLI output logic, strengthen tests\n\n- Quote include and library dirs in get_cflags/get_ldflags so paths with\n  spaces work, sharing one quote helper in commands.py\n- Restructure the --file/--cflags/--ldflags printing into a single print\n- Note the Unix-compiler orientation in help text and docs\n- Test -L presence for --embed and quoting of paths with spaces\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* refactor: simplify flag helpers and keep import pybind11 light\n\n- Replace _get_config_var(name, fmt, quote) with a plain _config(name)\n  string helper; formatting and quoting happen at the call sites\n- Defer sysconfig/shlex imports so import pybind11 does not pay for the\n  CLI (~1ms -\u003e ~0.08ms for pybind11.commands)\n- Fetch EXT_SUFFIX once in main()\n- Import commands normally in the quoting test instead of importlib\n  file loading\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* fix: shared-library flags on all Unix platforms\n\nThe --file/--ldflags output only added -shared and -fPIC on Linux, so\nother Unix platforms (FreeBSD, Solaris, AIX) linked an executable and\nfailed on the missing main. Gate on os.name instead.\n\nAssisted-by: ClaudeCode:claude-opus-5",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b693bd58789ecdbb1256944fc6af539dd2196352",
      "old_mode": 33188,
      "old_path": "docs/compiling.rst",
      "new_id": "1838777e63958511115c40f2e20b74405dae05b2",
      "new_mode": 33188,
      "new_path": "docs/compiling.rst"
    },
    {
      "type": "modify",
      "old_id": "21c3cd9abc2577e3f416c78000045299a0a9e7af",
      "old_mode": 33188,
      "old_path": "pybind11/__main__.py",
      "new_id": "ce597c781ae7a3f4cdc5ae4b4a635d061a2b7814",
      "new_mode": 33188,
      "new_path": "pybind11/__main__.py"
    },
    {
      "type": "modify",
      "old_id": "d535b6cca4e08ee977c948c8ae8affda0e774a93",
      "old_mode": 33188,
      "old_path": "pybind11/commands.py",
      "new_id": "8bd0a9bf13d1731c6c1a337cf31b6416ca608a62",
      "new_mode": 33188,
      "new_path": "pybind11/commands.py"
    },
    {
      "type": "modify",
      "old_id": "d96e9afc1ff577721efb4924553979a4c449db6f",
      "old_mode": 33188,
      "old_path": "tests/extra_python_package/test_files.py",
      "new_id": "0abb48c1f4a3f02274d69c2dca2c51d1061e096f",
      "new_mode": 33188,
      "new_path": "tests/extra_python_package/test_files.py"
    }
  ]
}
