pdf-tooling 1.2.0__tar.gz → 1.2.1__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.
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/PKG-INFO +4 -4
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/README.md +1 -1
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/THIRD_PARTY_LICENSES +3 -3
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/pyproject.toml +23 -3
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/.gitignore +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/CONTRIBUTING.md +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/LICENSE +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/Makefile +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/NOTICE +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/TESTING.md +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/changelog.md +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/_verify_outcomes.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/assert_artifacts.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/assert_skips.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/dco_check.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/gate_parity.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/licenses.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/measure_gate.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/reap_shims.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/startup_gate.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/stress_start_method_arm.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/scripts/verify_spec.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/__main__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/pdfium_raster.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/pdfium_text.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/pdfplumber_text.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/pikepdf_structure.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/pypdf_structure.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/reportlab_compose.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/soffice_office.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/subprocess_util.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/adapters/tesseract_ocr.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_compose.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_compress.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_create.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_decrypt.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_delete.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_doctor.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_encrypt.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_extract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_info.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_linearize.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_merge.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_meta.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_meta_get.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_meta_set.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_ocr.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_office.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_permissions.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_rasterize.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_reorder.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_repair.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_rotate.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_split.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_stamp.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_tables.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_text.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_version.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/cmd_watermark.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/common.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/exit_codes.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/main.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/cli/password.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/errors.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/models.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/batch.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/carriage.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/carriage_decl.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/compose.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/crypto.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/document_password.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/engine_disclosure.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/inspect.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/merge.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/metadata.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/ocr.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/office.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/optimize.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/overlay.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/pagerange.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/pages.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/procpool.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/raster.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/split.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ops/textract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/output/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/output/json.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/output/logging.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/output/table.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/compose.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/ocr.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/office.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/raster.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/structure.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/ports/text.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/_faults.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/atomic.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/confirm.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/naming.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/paths.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/policy.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/safety/tempnames.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/src/pdf_tooling/secret.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/__init__.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/_model.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_01.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_02.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_03.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_04.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_05.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_06.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_09.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_23.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_82.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_85.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_86.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/acceptance/audit_pdf_88.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/atomic_harness.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/ceiling_register.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/conftest.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/corpus.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/dryreal.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/provenance/pdf_tooling-0.1.1-py3-none-any.whl.provenance.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/provenance/pdf_tooling-0.1.1.tar.gz.provenance.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/provenance/pdf_tooling-0.2.0-py3-none-any.whl.provenance.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/provenance/pdf_tooling-0.2.0.tar.gz.provenance.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/PROVENANCE.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/a_655fc72_x_2141c76/PDF-89.header.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/a_655fc72_x_2141c76/changelog-headings.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/a_655fc72_x_2141c76/spec-index.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/a_655fc72_x_2141c76/subjects.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/b_1249757_x_7e2bd98/changelog-headings.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/b_1249757_x_7e2bd98/spec-index.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fixtures/roster_population/b_1249757_x_7e2bd98/subjects.txt +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/fs_snapshot.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/golden/README.md +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/golden/envelope_keys.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/golden/meta_get.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/golden/tables_lines.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/golden/text_layout.json +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/helpers/engine_hiding.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/helpers/pdfstream.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_atomic_crash.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_bulk_clobber_gate.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_compose_roundtrip.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_cross_filesystem.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_crypto_roundtrip.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_ocr.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_office.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_office_orphan_probe.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_optimize_cli.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_or7_bulk_destructive.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_or7_engine_absent.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_out_dir_planning.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_overlay_preservation.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pages_cli.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf107_meta_set_xmp_shapes.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf108_carriage_warnings.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf112_render_budget.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf115_decrypted_output_refusal.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf116_metadata_carriage.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf120_soffice_hardening.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf121_clear_all_remanence.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf126_residual_unreachable.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf127_clear_all_in_place_refusal.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf128_batch_auth_and_owner_only_password.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf129_sigkill_residue_contract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf89_destination_is_input.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf90_output_mode.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf99_meta_set_no_info.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_procpool_group_signals.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_purity_primitive.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_rasterize_cli.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_rasterize_signals.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_render_pool_start_method.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_samples_guard_fires.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_split_merge_atomicity.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_split_merge_cli.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_split_merge_roundtrip.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_text_tables_cli.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_value_shape.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/pagetree.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/pdfium_text.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/ratchet.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/registry.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/remanence.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/samples_guard.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/seam_sitecustomize/sitecustomize.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/seams.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/spec_id_grammar.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_acceptance_audit.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_adapter_stream_ownership.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_assert_skips.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_batch_continuation.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_brand_surfaces.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_changelog_history.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_cli_contract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_cli_spine.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_community_health_files.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_corpus.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_coverage_policy.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_derived_dimensions.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_destination_canonicalization_boundary.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_docs_antirot.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_docstring_pointers.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_doctor.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_engine_boundary.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_engine_gating_census.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_engine_hiding_shim.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_envelope_contract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_gate_budget.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_gate_parity.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_honesty_claims.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_import_boundaries.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_info.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_license_metadata_policy.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_license_policy.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_merge_gate.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_message_hygiene.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_pagerange.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_password_file_contract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_password_leaks.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_pdf130_readme_first_screen.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_pypi_metadata.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_pypi_provenance.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_ratchet_integrity.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_read_seams.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_rename_completeness.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_samples.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_secret_leak_sweeps.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_spec_id_grammar.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_startup_message_short_summary.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_testdata.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_usage_envelope.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_verify_spec.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_website_contract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_website_diagrams.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_website_i18n.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/test_workflow_supply_chain.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_atomic_writer.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_compose.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_confirm.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_create.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_dryreal.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_golden.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_merge.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_meta_group.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_metadata.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_name_template.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_optimize.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_output_flags.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_overlay.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_pages.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_password_hint.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_password_resolution.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_pdf121_drop_unreachable.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_ports_registry.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_procpool.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_raster.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_registry.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_safety_paths.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_samples_guard.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_secret.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_split.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_subprocess_util.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_tempnames.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_textract.py +0 -0
- {pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/unit/test_verb_help_content.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pdf-tooling
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: One safe, permissively-licensed command-line tool for the common PDF chores.
|
|
5
5
|
Project-URL: Homepage, https://armandoherra.github.io/pdf-tooling/
|
|
6
6
|
Project-URL: Documentation, https://github.com/ArmandoHerra/pdf-tooling#readme
|
|
@@ -28,8 +28,8 @@ Classifier: Topic :: Utilities
|
|
|
28
28
|
Requires-Python: >=3.11
|
|
29
29
|
Requires-Dist: pdfplumber<0.12,>=0.11.10
|
|
30
30
|
Requires-Dist: pikepdf<11,>=10.12.0
|
|
31
|
-
Requires-Dist: pillow<13
|
|
32
|
-
Requires-Dist: pypdf[crypto]<7,>=6.
|
|
31
|
+
Requires-Dist: pillow<14,>=13.0.0
|
|
32
|
+
Requires-Dist: pypdf[crypto]<7,>=6.21.2
|
|
33
33
|
Requires-Dist: pypdfium2<6,>=5.13.0
|
|
34
34
|
Requires-Dist: pytesseract<0.4,>=0.3.13
|
|
35
35
|
Requires-Dist: reportlab<6,>=5.0.1
|
|
@@ -366,7 +366,7 @@ A supplied password is checked even when the document would open without one: an
|
|
|
366
366
|
|
|
367
367
|
## Upgrading to 1.2
|
|
368
368
|
|
|
369
|
-
A `1.1.x` invocation or script that relied on any of the following observes a different exit code or message at `1.2`. These changes
|
|
369
|
+
A `1.1.x` invocation or script that relied on any of the following observes a different exit code or message at `1.2`. These changes shipped in `1.2.0` on 2026-10-08.
|
|
370
370
|
|
|
371
371
|
| In 1.1 | In 1.2 | What to change |
|
|
372
372
|
|---|---|---|
|
|
@@ -324,7 +324,7 @@ A supplied password is checked even when the document would open without one: an
|
|
|
324
324
|
|
|
325
325
|
## Upgrading to 1.2
|
|
326
326
|
|
|
327
|
-
A `1.1.x` invocation or script that relied on any of the following observes a different exit code or message at `1.2`. These changes
|
|
327
|
+
A `1.1.x` invocation or script that relied on any of the following observes a different exit code or message at `1.2`. These changes shipped in `1.2.0` on 2026-10-08.
|
|
328
328
|
|
|
329
329
|
| In 1.1 | In 1.2 | What to change |
|
|
330
330
|
|---|---|---|
|
|
@@ -62,7 +62,7 @@ THE SOFTWARE.
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
brotli
|
|
65
|
-
1.2.
|
|
65
|
+
1.2.1
|
|
66
66
|
MIT
|
|
67
67
|
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
|
|
68
68
|
|
|
@@ -760,7 +760,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
|
|
|
760
760
|
|
|
761
761
|
|
|
762
762
|
pillow
|
|
763
|
-
|
|
763
|
+
13.0.0
|
|
764
764
|
MIT-CMU
|
|
765
765
|
The Python Imaging Library (PIL) is
|
|
766
766
|
|
|
@@ -2405,7 +2405,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
2405
2405
|
|
|
2406
2406
|
|
|
2407
2407
|
pypdf
|
|
2408
|
-
6.
|
|
2408
|
+
6.21.2
|
|
2409
2409
|
BSD-3-Clause
|
|
2410
2410
|
Copyright (c) 2006-2008, Mathieu Fenniak
|
|
2411
2411
|
Some contributions copyright (c) 2007, Ashish Kulkarni <kulkarni.ashish@gmail.com>
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pdf-tooling"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.1"
|
|
8
8
|
description = "One safe, permissively-licensed command-line tool for the common PDF chores."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -54,13 +54,20 @@ dependencies = [
|
|
|
54
54
|
# lifting it needs the suite run against 7.x). The lock was refreshed
|
|
55
55
|
# targeted (pypdf and urllib3 only); urllib3 >= 2.8.0 clears three more
|
|
56
56
|
# advisories in the dev-only closure (requests <- pip-audit).
|
|
57
|
-
|
|
57
|
+
# 2026-10-24 (ledger 9a0daae8ee follow-up): floor 6.19.0 -> 6.21.2, the
|
|
58
|
+
# lowest version that fixes all 11 pip-audit advisories published against
|
|
59
|
+
# 6.19.0; the `<7` ceiling stays (no fix needs 7.x).
|
|
60
|
+
"pypdf[crypto]>=6.21.2,<7",
|
|
58
61
|
"pypdfium2>=5.13.0,<6",
|
|
59
62
|
"reportlab>=5.0.1,<6",
|
|
60
63
|
"pikepdf>=10.12.0,<11",
|
|
61
64
|
"pdfplumber>=0.11.10,<0.12",
|
|
62
65
|
"pytesseract>=0.3.13,<0.4",
|
|
63
|
-
|
|
66
|
+
# 2026-10-24: 13.0.0 is the only release that fixes the 37 advisories
|
|
67
|
+
# pip-audit reports against 12.3.0, so the `<13` ceiling held every user on
|
|
68
|
+
# a vulnerable Pillow. Floor and ceiling move together to >=13.0.0,<14; the
|
|
69
|
+
# full suite was run against 13.0.0 before the move.
|
|
70
|
+
"pillow>=13.0.0,<14",
|
|
64
71
|
"typer>=0.12,<1",
|
|
65
72
|
]
|
|
66
73
|
|
|
@@ -83,6 +90,19 @@ Repository = "https://github.com/ArmandoHerra/pdf-tooling"
|
|
|
83
90
|
Changelog = "https://github.com/ArmandoHerra/pdf-tooling/blob/main/changelog.md"
|
|
84
91
|
Issues = "https://github.com/ArmandoHerra/pdf-tooling/issues"
|
|
85
92
|
|
|
93
|
+
# CI uv pin (ledger 9a0daae8ee, B-461). uv 0.13 stopped writing the
|
|
94
|
+
# `_virtualenv.pth` startup shim, so a bare venv interpreter loads 12 fewer
|
|
95
|
+
# modules (45 -> 33 locally; CI's recorded floor 36 -> 24). That floor is the
|
|
96
|
+
# DENOMINATOR of test_total_startup_import_cost_stays_under_its_ceiling, so
|
|
97
|
+
# every Linux 3.11/3.12 cell read 27-30 against the 26.5 ceiling with no
|
|
98
|
+
# change in this project's own import cost. CI therefore pins uv 0.12.24 in
|
|
99
|
+
# every `astral-sh/setup-uv` step's `version:` input. It is deliberately NOT
|
|
100
|
+
# a `[tool.uv] required-version` here: Dependabot's uv updater runs only the
|
|
101
|
+
# newest uv and drops every update with `tool_version_not_supported` when the
|
|
102
|
+
# project declares an older range. Lifting the pin needs the ceiling
|
|
103
|
+
# re-derived under uv 0.13 with a fresh measured distribution, never a
|
|
104
|
+
# widened constant. A local `make test` under uv 0.13 reds the same arm.
|
|
105
|
+
|
|
86
106
|
[dependency-groups]
|
|
87
107
|
dev = [
|
|
88
108
|
"ruff>=0.6",
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf107_meta_set_xmp_shapes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf115_decrypted_output_refusal.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf121_clear_all_remanence.py
RENAMED
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf126_residual_unreachable.py
RENAMED
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf127_clear_all_in_place_refusal.py
RENAMED
|
File without changes
|
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf129_sigkill_residue_contract.py
RENAMED
|
File without changes
|
{pdf_tooling-1.2.0 → pdf_tooling-1.2.1}/tests/integration/test_pdf89_destination_is_input.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
|