LICENSE
README.md
pyproject.toml
src/coolscanpy/__init__.py
src/coolscanpy/_device.py
src/coolscanpy/_logging.py
src/coolscanpy/_roll.py
src/coolscanpy/exceptions.py
src/coolscanpy/py.typed
src/coolscanpy/types.py
src/coolscanpy.egg-info/PKG-INFO
src/coolscanpy.egg-info/SOURCES.txt
src/coolscanpy.egg-info/dependency_links.txt
src/coolscanpy.egg-info/entry_points.txt
src/coolscanpy.egg-info/requires.txt
src/coolscanpy.egg-info/top_level.txt
src/coolscanpy/capture/__init__.py
src/coolscanpy/capture/frame_registration.py
src/coolscanpy/capture/full_negative.py
src/coolscanpy/capture/full_negative_capture.py
src/coolscanpy/capture/full_negative_workflow.py
src/coolscanpy/capture/sane_rgb_geometry.py
src/coolscanpy/capture/single_pass_workflow.py
src/coolscanpy/cli/__init__.py
src/coolscanpy/cli/practical_parity.py
src/coolscanpy/cli/roll_scan.py
src/coolscanpy/io/__init__.py
src/coolscanpy/io/encoders.py
src/coolscanpy/protocol/__init__.py
src/coolscanpy/protocol/ls5000_single_pass/__init__.py
src/coolscanpy/protocol/ls5000_single_pass/bundle.py
src/coolscanpy/protocol/ls5000_single_pass/capture_process.py
src/coolscanpy/protocol/ls5000_single_pass/continuation_plan.py
src/coolscanpy/protocol/ls5000_single_pass/density.py
src/coolscanpy/protocol/ls5000_single_pass/manual_frames.py
src/coolscanpy/protocol/ls5000_single_pass/meter.py
src/coolscanpy/protocol/ls5000_single_pass/packed.py
src/coolscanpy/protocol/ls5000_single_pass/plan.py
src/coolscanpy/protocol/ls5000_single_pass/roll_diagnosis.py
src/coolscanpy/protocol/ls5000_single_pass/roll_index.py
src/coolscanpy/protocol/ls5000_single_pass/streaming_sidecar.py
src/coolscanpy/protocol/ls5000_single_pass/usb_backend.py
src/coolscanpy/protocol/ls5000_single_pass/window.py
src/coolscanpy/protocol/ls5000_single_pass/worker.py
src/coolscanpy/protocol/ls5000_single_pass/data/__init__.py
src/coolscanpy/protocol/ls5000_single_pass/data/replay-first-rgbi4-manifest.json
src/coolscanpy/protocol/ls5000_single_pass/data/replay-first-rgbi4-plan.jsonl
src/coolscanpy/protocol/ls5000_single_pass/data/replay-next-rgbi4-plan.json
src/coolscanpy/receipts/__init__.py
src/coolscanpy/receipts/ice_bundle.py
src/coolscanpy/receipts/outputs.py
src/coolscanpy/receipts/provenance.py
src/coolscanpy/receipts/quality.py
src/coolscanpy/receipts/tiff_contract.py
src/coolscanpy/receipts/writer.py
src/coolscanpy/roll/__init__.py
src/coolscanpy/roll/controls.py
src/coolscanpy/roll/forward.py
src/coolscanpy/roll/preview_session.py
src/coolscanpy/roll/registration.py
src/coolscanpy/roll/service.py
src/coolscanpy/session/__init__.py
src/coolscanpy/session/backend.py
src/coolscanpy/session/filenames.py
src/coolscanpy/session/params.py
src/coolscanpy/session/result.py
src/coolscanpy/session/service.py
src/coolscanpy/transport/__init__.py
src/coolscanpy/transport/_usb_selector.py
src/coolscanpy/transport/adapter_status.py
src/coolscanpy/transport/libsane_dual_source.py
src/coolscanpy/transport/macos_scsi.py
src/coolscanpy/transport/sane.py
src/coolscanpy/transport/split_alignment_policy.py
tests/test_digital_ice_frame.py
tests/test_facade.py
tests/test_usb_backend.py