python-hwpx-automation 7.0.3__tar.gz → 7.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_hwpx_automation-7.0.3/src/python_hwpx_automation.egg-info → python_hwpx_automation-7.0.4}/PKG-INFO +8 -10
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/README.md +7 -9
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/pyproject.toml +1 -1
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/quality_render.py +55 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/identity.json +7 -7
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/__init__.py +1 -1
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/wordbox.py +8 -8
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/quality.py +2 -2
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/diff.py +2 -2
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/worker.py +1 -1
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4/src/python_hwpx_automation.egg-info}/PKG-INFO +8 -10
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/LICENSE +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/MANIFEST.in +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/NOTICE +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/setup.cfg +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__init__.pyi +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__main__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/agent_document.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/api.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/blind_eval.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/capabilities.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/compat.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/configuration.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/content.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/context.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/diff.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/document.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/formatting.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/handles.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/locations.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/locator.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/plan.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/resources.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/search.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/transactions.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/txn.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/document_state.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/errors.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/execution_lock.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/fastmcp_adapter.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/form_fill.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/form_output_models.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/_shared.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/agent_document.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/authoring.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/content_edit.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/form_fill.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/layout_style.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/read_export.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/specialized.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/tracked_changes.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/handlers/workflow.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwp_converter.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwp_support.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwpx_ops.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/identity.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ingest_adapters.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/markdown_plan.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mcp_cli.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/metadata/tools_meta.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mixed_form.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mutation_models.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/network_policy.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/_batch_verification.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/bundle.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/catalog.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/dump.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/mapping.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/model.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/native.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/blueprint/replay.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/catalog.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/cli.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/commands.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/document.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/form_plan.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/model.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/path.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/query.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/agent/story.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/advanced_generators.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/builder/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/builder/core.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/builder/report.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/_support.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/composer.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/harvest.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/plan.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profile.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/info_table.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/profile.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/profile.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/info_table.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/profile.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/profile.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/profiles/report/template.hwpx +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/design/validator.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/presets/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/presets/proposal.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/report_parser.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/style_profile.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/authoring/template_analyzer.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/charting/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/compliance/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/compliance/official_lint.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/compliance/pii.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/document_ops/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/document_ops/comparison.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/document_ops/mail_merge.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/document_ops/redline.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/evalplan/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/evalplan/runtime.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/compose.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/ir.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/measure.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/parser.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/exam/profile.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/classification.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fill_residue.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/apply.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/engine.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/measure.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/policy.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/report.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/fit/seal.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/guidance.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/split_run.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/form_fill/template_formfit.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/composition.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/data/bank.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/data/genres.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/gianmun.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/house_style/org_chart.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/quality/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/quality/page_guard.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/_hancom_open_rate.ps1 +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/_render_hwpx.ps1 +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/_render_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/block_splits.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/detectors.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/fixture_corpus.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/oracle.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/page_qa.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/qa_contracts.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/rendering/qa_metrics.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/utilities/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/utilities/table_compute.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/_border_fill.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/composition.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/content_layout.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/context.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/form_fields.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/media.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/memo_style.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/package_validation.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/planning.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/preview_export.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/read_query.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/save_policy.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/tables.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ops_services/transactions.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/preview_output_models.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/public-modules.json +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/py.typed +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/quality.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/quality_generation.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/resources.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/runtime.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/runtime_services.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/server.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/storage.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/tool_bindings.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/tool_contract.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/upstream.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/utils/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/utils/helpers.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/visual_qa.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/__init__.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/adapters.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/dispatcher.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/models.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/policy.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/render_contracts.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/render_metrics.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/render_queue.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/render_security.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/render_transport.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/rendering.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/service.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/state_machine.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workflow/store.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/workspace.py +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/python_hwpx_automation.egg-info/SOURCES.txt +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/python_hwpx_automation.egg-info/dependency_links.txt +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/python_hwpx_automation.egg-info/entry_points.txt +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/python_hwpx_automation.egg-info/requires.txt +0 -0
- {python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/python_hwpx_automation.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-hwpx-automation
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.4
|
|
4
4
|
Summary: Task-oriented HWPX document automation for Python, with an optional MCP adapter.
|
|
5
5
|
Author: Kohkyuhyun
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -74,15 +74,13 @@ Dynamic: license-file
|
|
|
74
74
|
|
|
75
75
|
<!-- release-state: release-approved -->
|
|
76
76
|
> [!NOTE]
|
|
77
|
-
>
|
|
78
|
-
> hwpx
|
|
79
|
-
>
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
> Release·marketplace·실제 marketplace 설치) 관찰 후에만
|
|
85
|
-
> 승격됩니다 — [릴리스 runbook](docs/release-runbook.md)
|
|
77
|
+
> 아직 공개되지 않은 7.0.4 후보입니다.
|
|
78
|
+
> 후보 조합: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.4 → hwpx-plugin 2.1.0`.
|
|
79
|
+
> 공개 트레인: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.3 → hwpx-plugin 2.0.3`.
|
|
80
|
+
> 계약은 `8c278ebd5becba08`이며 도구 표면과 최소 호환 버전은 유지합니다.
|
|
81
|
+
> 공개 좌표는 core·automation PyPI와 plugin GitHub
|
|
82
|
+
> Release·marketplace·실제 marketplace 설치 관찰 후에만 승격합니다.
|
|
83
|
+
> [릴리스 runbook](docs/release-runbook.md)
|
|
86
84
|
|
|
87
85
|
[python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
|
|
88
86
|
양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
|
|
@@ -14,15 +14,13 @@
|
|
|
14
14
|
|
|
15
15
|
<!-- release-state: release-approved -->
|
|
16
16
|
> [!NOTE]
|
|
17
|
-
>
|
|
18
|
-
> hwpx
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
>
|
|
22
|
-
>
|
|
23
|
-
>
|
|
24
|
-
> Release·marketplace·실제 marketplace 설치) 관찰 후에만
|
|
25
|
-
> 승격됩니다 — [릴리스 runbook](docs/release-runbook.md)
|
|
17
|
+
> 아직 공개되지 않은 7.0.4 후보입니다.
|
|
18
|
+
> 후보 조합: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.4 → hwpx-plugin 2.1.0`.
|
|
19
|
+
> 공개 트레인: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.3 → hwpx-plugin 2.0.3`.
|
|
20
|
+
> 계약은 `8c278ebd5becba08`이며 도구 표면과 최소 호환 버전은 유지합니다.
|
|
21
|
+
> 공개 좌표는 core·automation PyPI와 plugin GitHub
|
|
22
|
+
> Release·marketplace·실제 marketplace 설치 관찰 후에만 승격합니다.
|
|
23
|
+
> [릴리스 runbook](docs/release-runbook.md)
|
|
26
24
|
|
|
27
25
|
[python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
|
|
28
26
|
양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-hwpx-automation"
|
|
7
|
-
version = "7.0.
|
|
7
|
+
version = "7.0.4"
|
|
8
8
|
description = "Task-oriented HWPX document automation for Python, with an optional MCP adapter."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Kohkyuhyun" }]
|
|
@@ -272,6 +272,60 @@ def describe_capabilities(domain: str | None = None) -> dict:
|
|
|
272
272
|
return report
|
|
273
273
|
|
|
274
274
|
|
|
275
|
+
_STACK_UPDATE_STATE_SCHEMA = "hwpx.stack-update-state.v1"
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
def _stack_update_block() -> dict[str, Any]:
|
|
279
|
+
"""Launcher-managed runtime update state (hwpx-plugins Feature 066).
|
|
280
|
+
|
|
281
|
+
The bundled launcher writes update-state.json and passes its path as
|
|
282
|
+
HWPX_STACK_UPDATE_STATE. Without it the runtime is not launcher-managed
|
|
283
|
+
(pip install, editable checkout, plain uvx) and the block says so; it
|
|
284
|
+
never guesses.
|
|
285
|
+
"""
|
|
286
|
+
path = os.environ.get("HWPX_STACK_UPDATE_STATE")
|
|
287
|
+
if not path:
|
|
288
|
+
return {"available": False, "reason": "NOT_MANAGED"}
|
|
289
|
+
try:
|
|
290
|
+
with open(path, encoding="utf-8") as handle:
|
|
291
|
+
state = json.load(handle)
|
|
292
|
+
except FileNotFoundError:
|
|
293
|
+
return {"available": False, "reason": "STATE_MISSING", "path": path}
|
|
294
|
+
except (OSError, UnicodeDecodeError, json.JSONDecodeError) as exc:
|
|
295
|
+
return {"available": False, "reason": "STATE_UNREADABLE", "path": path, "detail": str(exc)}
|
|
296
|
+
if not isinstance(state, dict) or state.get("schemaVersion") != _STACK_UPDATE_STATE_SCHEMA:
|
|
297
|
+
return {"available": False, "reason": "STATE_SCHEMA_UNKNOWN", "path": path}
|
|
298
|
+
runtime = state.get("runtime")
|
|
299
|
+
if not isinstance(runtime, dict):
|
|
300
|
+
return {"available": False, "reason": "STATE_INVALID", "path": path}
|
|
301
|
+
installed = runtime.get("installed")
|
|
302
|
+
if (
|
|
303
|
+
not isinstance(installed, dict)
|
|
304
|
+
or set(installed) != {"python-hwpx", "python-hwpx-automation"}
|
|
305
|
+
or not all(isinstance(value, str) and value for value in installed.values())
|
|
306
|
+
):
|
|
307
|
+
return {"available": False, "reason": "STATE_INVALID", "path": path}
|
|
308
|
+
running = {
|
|
309
|
+
"python-hwpx": _package_version("python-hwpx"),
|
|
310
|
+
"python-hwpx-automation": _package_version("python-hwpx-automation"),
|
|
311
|
+
}
|
|
312
|
+
runtime = {
|
|
313
|
+
**runtime,
|
|
314
|
+
"running": running,
|
|
315
|
+
"restartRequired": runtime["installed"] != running,
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
"available": True,
|
|
319
|
+
"path": path,
|
|
320
|
+
"checkedAt": state.get("checkedAt"),
|
|
321
|
+
"autoUpdate": state.get("autoUpdate"),
|
|
322
|
+
"channel": state.get("channel"),
|
|
323
|
+
"runtime": runtime,
|
|
324
|
+
"pluginBundle": state.get("pluginBundle"),
|
|
325
|
+
"lastError": state.get("lastError"),
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
|
|
275
329
|
def mcp_server_health() -> dict:
|
|
276
330
|
"""MCP 서버 transport와 timeout/keepalive 점검 정보를 반환합니다."""
|
|
277
331
|
transport = env_value("TRANSPORT", "stdio")
|
|
@@ -386,6 +440,7 @@ def mcp_server_health() -> dict:
|
|
|
386
440
|
),
|
|
387
441
|
},
|
|
388
442
|
"capability": _capability_block(skew_detected, surface_details),
|
|
443
|
+
"stackUpdate": _stack_update_block(),
|
|
389
444
|
"unitPolicy": {
|
|
390
445
|
"status": "audited",
|
|
391
446
|
"fontSize": "points",
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/identity.json
RENAMED
|
@@ -7,18 +7,18 @@
|
|
|
7
7
|
"candidate": {
|
|
8
8
|
"pythonHwpx": "6.3.0",
|
|
9
9
|
"canonicalDistribution": "python-hwpx-automation",
|
|
10
|
-
"canonicalAutomation": "7.0.
|
|
10
|
+
"canonicalAutomation": "7.0.4",
|
|
11
11
|
"compatibilityDistribution": "hwpx-mcp-server",
|
|
12
|
-
"compatibility": "7.0.
|
|
13
|
-
"plugin": "2.0
|
|
12
|
+
"compatibility": "7.0.4",
|
|
13
|
+
"plugin": "2.1.0",
|
|
14
14
|
"contractHash": "8c278ebd5becba08"
|
|
15
15
|
},
|
|
16
16
|
"currentPublic": {
|
|
17
|
-
"pythonHwpx": "6.
|
|
17
|
+
"pythonHwpx": "6.3.0",
|
|
18
18
|
"primaryDistribution": "python-hwpx-automation",
|
|
19
|
-
"primaryApplication": "7.0.
|
|
20
|
-
"plugin": "2.0.
|
|
21
|
-
"contractHash": "
|
|
19
|
+
"primaryApplication": "7.0.3",
|
|
20
|
+
"plugin": "2.0.3",
|
|
21
|
+
"contractHash": "8c278ebd5becba08"
|
|
22
22
|
},
|
|
23
23
|
"promotionGate": "Three states are mandatory: unreleased-candidate while auditing; release-approved only after separate owner approval and while currentPublic still names the previously observed coherent stack; released only in a follow-up commit after remote truth is observed for core, canonical automation, the compatibility distribution, the plugin GitHub release, the marketplace entry, and a real marketplace install. The automation tag workflow publishes only release-approved, leaves currentPublic unchanged, and hands an attached receipt to plugin publication."
|
|
24
24
|
},
|
|
@@ -1292,7 +1292,7 @@ def inspect_document_authoring_quality(
|
|
|
1292
1292
|
_rendered = _mac.render_pdf(str(_hwpx), str(_pdf))
|
|
1293
1293
|
if _rendered and Path(_rendered).exists():
|
|
1294
1294
|
try:
|
|
1295
|
-
import
|
|
1295
|
+
import pymupdf as _fitz
|
|
1296
1296
|
|
|
1297
1297
|
_doc = _fitz.open(_rendered)
|
|
1298
1298
|
_has_text = any(
|
|
@@ -185,7 +185,7 @@ def fitz_available() -> bool:
|
|
|
185
185
|
"""True when PyMuPDF (``fitz``) can be imported (the extraction backend)."""
|
|
186
186
|
|
|
187
187
|
try: # pragma: no cover - trivial import probe
|
|
188
|
-
import fitz # noqa: F401
|
|
188
|
+
import pymupdf as fitz # noqa: F401
|
|
189
189
|
except Exception:
|
|
190
190
|
return False
|
|
191
191
|
return True
|
|
@@ -205,7 +205,7 @@ def extract_word_boxes(pdf_path: str, *, page: int | None = None) -> list[WordBo
|
|
|
205
205
|
|
|
206
206
|
if not fitz_available():
|
|
207
207
|
raise OracleUnavailable("PyMuPDF (fitz) is not installed")
|
|
208
|
-
import fitz
|
|
208
|
+
import pymupdf as fitz
|
|
209
209
|
|
|
210
210
|
boxes: list[WordBox] = []
|
|
211
211
|
try:
|
|
@@ -255,7 +255,7 @@ def extract_glyph_boxes(pdf_path: str, *, page: int | None = None) -> list[WordB
|
|
|
255
255
|
|
|
256
256
|
if not fitz_available():
|
|
257
257
|
raise OracleUnavailable("PyMuPDF (fitz) is not installed")
|
|
258
|
-
import fitz
|
|
258
|
+
import pymupdf as fitz
|
|
259
259
|
|
|
260
260
|
boxes: list[WordBox] = []
|
|
261
261
|
try:
|
|
@@ -709,7 +709,7 @@ def render_glyph_boxes(
|
|
|
709
709
|
if not pdf or not os.path.exists(pdf) or os.path.getsize(pdf) == 0:
|
|
710
710
|
raise OracleUnavailable("Hancom render produced no PDF")
|
|
711
711
|
boxes = extract_glyph_boxes(pdf, page=page)
|
|
712
|
-
import fitz
|
|
712
|
+
import pymupdf as fitz
|
|
713
713
|
|
|
714
714
|
with fitz.open(pdf) as doc:
|
|
715
715
|
if len(doc) == 0: # a 0-page render is a failed render, not a clean pass
|
|
@@ -742,7 +742,7 @@ def extract_cell_clips(pdf_path: str, *, page: int | None = None) -> list[Rect]:
|
|
|
742
742
|
|
|
743
743
|
if not fitz_available():
|
|
744
744
|
raise OracleUnavailable("PyMuPDF (fitz) is not installed")
|
|
745
|
-
import fitz
|
|
745
|
+
import pymupdf as fitz
|
|
746
746
|
|
|
747
747
|
clips: list[Rect] = []
|
|
748
748
|
try:
|
|
@@ -785,7 +785,7 @@ def extract_image_boxes(pdf_path: str, *, page: int | None = None) -> list[Rect]
|
|
|
785
785
|
|
|
786
786
|
if not fitz_available():
|
|
787
787
|
raise OracleUnavailable("PyMuPDF (fitz) is not installed")
|
|
788
|
-
import fitz
|
|
788
|
+
import pymupdf as fitz
|
|
789
789
|
|
|
790
790
|
boxes: list[Rect] = []
|
|
791
791
|
try:
|
|
@@ -843,7 +843,7 @@ def render_form_geometry(
|
|
|
843
843
|
raise OracleUnavailable("Hancom render produced no PDF")
|
|
844
844
|
glyphs = extract_glyph_boxes(rendered, page=page)
|
|
845
845
|
clips = extract_cell_clips(rendered, page=page)
|
|
846
|
-
import fitz
|
|
846
|
+
import pymupdf as fitz
|
|
847
847
|
|
|
848
848
|
with fitz.open(rendered) as doc:
|
|
849
849
|
if len(doc) == 0:
|
|
@@ -957,7 +957,7 @@ def extract_layout_signature(pdf_path: str) -> LayoutSignature:
|
|
|
957
957
|
|
|
958
958
|
if not fitz_available():
|
|
959
959
|
raise OracleUnavailable("PyMuPDF (fitz) is not installed")
|
|
960
|
-
import fitz
|
|
960
|
+
import pymupdf as fitz
|
|
961
961
|
|
|
962
962
|
try:
|
|
963
963
|
doc = fitz.open(pdf_path)
|
|
@@ -180,7 +180,7 @@ def detect_overflow_crossings(
|
|
|
180
180
|
PyMuPDF; raises ``RuntimeError`` if unavailable (caller degrades to unverified).
|
|
181
181
|
"""
|
|
182
182
|
try:
|
|
183
|
-
import fitz
|
|
183
|
+
import pymupdf as fitz
|
|
184
184
|
except Exception as exc: # pragma: no cover - env probe
|
|
185
185
|
raise RuntimeError(f"PyMuPDF unavailable: {exc}") from exc
|
|
186
186
|
|
|
@@ -266,7 +266,7 @@ def score_render(
|
|
|
266
266
|
[f"render imaging deps unavailable: {exc}"],
|
|
267
267
|
)
|
|
268
268
|
|
|
269
|
-
import fitz # already importable if we got here
|
|
269
|
+
import pymupdf as fitz # already importable if we got here
|
|
270
270
|
|
|
271
271
|
doc = fitz.open(pdf)
|
|
272
272
|
pages = doc.page_count
|
|
@@ -27,7 +27,7 @@ _TALL_BAND_REL = 1.0
|
|
|
27
27
|
|
|
28
28
|
def pymupdf_available() -> bool:
|
|
29
29
|
try: # pragma: no cover - trivial import probe
|
|
30
|
-
import fitz # noqa: F401
|
|
30
|
+
import pymupdf as fitz # noqa: F401
|
|
31
31
|
except Exception:
|
|
32
32
|
return False
|
|
33
33
|
return True
|
|
@@ -36,7 +36,7 @@ def pymupdf_available() -> bool:
|
|
|
36
36
|
def render_pdf_to_images(pdf_path: str | Path, dpi: int = 150) -> list["Image.Image"]:
|
|
37
37
|
"""Rasterize every page of ``pdf_path`` to a list of RGB ``PIL.Image``."""
|
|
38
38
|
|
|
39
|
-
import fitz # pymupdf
|
|
39
|
+
import pymupdf as fitz # pymupdf
|
|
40
40
|
from PIL import Image
|
|
41
41
|
|
|
42
42
|
pages: list[Image.Image] = []
|
|
@@ -255,7 +255,7 @@ class SerializedHancomWorker:
|
|
|
255
255
|
@staticmethod
|
|
256
256
|
def _rasterize(pdf: Path, destination: Path, dpi: int) -> list[Path]:
|
|
257
257
|
try:
|
|
258
|
-
import fitz
|
|
258
|
+
import pymupdf as fitz
|
|
259
259
|
except ImportError as exc:
|
|
260
260
|
raise RuntimeError("PyMuPDF is required for page PNG output") from exc
|
|
261
261
|
document = fitz.open(pdf)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-hwpx-automation
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.4
|
|
4
4
|
Summary: Task-oriented HWPX document automation for Python, with an optional MCP adapter.
|
|
5
5
|
Author: Kohkyuhyun
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -74,15 +74,13 @@ Dynamic: license-file
|
|
|
74
74
|
|
|
75
75
|
<!-- release-state: release-approved -->
|
|
76
76
|
> [!NOTE]
|
|
77
|
-
>
|
|
78
|
-
> hwpx
|
|
79
|
-
>
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
> Release·marketplace·실제 marketplace 설치) 관찰 후에만
|
|
85
|
-
> 승격됩니다 — [릴리스 runbook](docs/release-runbook.md)
|
|
77
|
+
> 아직 공개되지 않은 7.0.4 후보입니다.
|
|
78
|
+
> 후보 조합: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.4 → hwpx-plugin 2.1.0`.
|
|
79
|
+
> 공개 트레인: `python-hwpx 6.3.0 → python-hwpx-automation 7.0.3 → hwpx-plugin 2.0.3`.
|
|
80
|
+
> 계약은 `8c278ebd5becba08`이며 도구 표면과 최소 호환 버전은 유지합니다.
|
|
81
|
+
> 공개 좌표는 core·automation PyPI와 plugin GitHub
|
|
82
|
+
> Release·marketplace·실제 marketplace 설치 관찰 후에만 승격합니다.
|
|
83
|
+
> [릴리스 runbook](docs/release-runbook.md)
|
|
86
84
|
|
|
87
85
|
[python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
|
|
88
86
|
양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__init__.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__init__.pyi
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/__main__.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/agent_document.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/blind_eval.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/capabilities.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/configuration.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/__init__.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/content.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/context.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/diff.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/document.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/formatting.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/handles.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/locations.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/locator.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/plan.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/resources.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/search.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/core/txn.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/document_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/execution_lock.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/fastmcp_adapter.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/form_fill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwp_converter.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwp_support.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/hwpx_ops.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/identity.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/ingest_adapters.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/markdown_plan.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mcp_cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mixed_form.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/mutation_models.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/network_policy.py
RENAMED
|
File without changes
|
{python_hwpx_automation-7.0.3 → python_hwpx_automation-7.0.4}/src/hwpx_automation/office/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|