Remove ability to override temporary (working) folder

Little point to this feature - on most platforms the environment
variable can be overridden if desired to set a new root location.

At the same time, this change removes the ability to resume a partially
executed pipeline by deleting all of the results on failure.  If -k is
provided then the temporary files will survive but there's no way to
resume from them.  Because resuming doesn't really work away and would
only be useful to users experiencing very specific problems, this is
probably not worth it, so no major loss.  The intent of -k is to assist
debugging.
This commit is contained in:
Jim Barlow
2015-07-25 01:45:26 -07:00
parent 5ce544289f
commit 16177d0a52
+21 -16
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
from contextlib import suppress
from tempfile import NamedTemporaryFile
from tempfile import NamedTemporaryFile, mkdtemp
import sys
import os
import fileinput
@@ -9,10 +9,10 @@ import re
import shutil
import warnings
import multiprocessing
import atexit
import PyPDF2 as pypdf
from PIL import Image
from parse import parse
from subprocess import Popen, check_call, PIPE, CalledProcessError, \
TimeoutExpired
@@ -23,7 +23,7 @@ except ImportError:
from ruffus import transform, suffix, merge, active_if, regex, jobs_limit, \
mkdir, formatter, follows, subdivide, collate, check_if_uptodate
formatter, follows, subdivide, collate, check_if_uptodate
import ruffus.cmdline as cmdline
from .hocrtransform import HocrTransform
@@ -113,9 +113,6 @@ advanced = parser.add_argument_group(
advanced.add_argument(
'--deskew-provider', choices=['imagemagick', 'leptonica'],
default='leptonica')
advanced.add_argument(
'--temp-folder', default='', type=str,
help="folder where the temporary files should be placed")
advanced.add_argument(
'--tesseract-config', default=[], type=list, action='append',
help="Tesseract configuration")
@@ -247,16 +244,24 @@ manager = multiprocessing.Manager()
_pdfinfo = manager.list()
_pdfinfo_lock = manager.Lock()
if options.temp_folder == '':
options.temp_folder = 'tmp'
work_folder = mkdtemp(prefix="com.github.ocrmypdf.")
@atexit.register
def cleanup_working_files(*args):
if options.keep_temporary_files:
print("Temporary working files saved at:")
print(work_folder)
else:
with suppress(FileNotFoundError):
shutil.rmtree(work_folder)
@follows(mkdir(options.temp_folder))
@transform(
input=options.input_file,
filter=suffix('.pdf'),
output='.repaired.pdf',
output_dir=options.temp_folder,
output_dir=work_folder,
extras=[_log, _pdfinfo, _pdfinfo_lock])
def repair_pdf(
input_file,
@@ -350,7 +355,7 @@ def get_pageinfo(input_file, pdfinfo, pdfinfo_lock):
input=split_pages,
filter=suffix('.page.pdf'),
output='.page.png',
output_dir=options.temp_folder,
output_dir=work_folder,
extras=[_log, _pdfinfo, _pdfinfo_lock])
def rasterize_with_ghostscript(
input_file,
@@ -506,7 +511,7 @@ def ocr_tesseract(
@collate(
input=[rasterize_with_ghostscript, preprocess_deskew, preprocess_clean],
filter=regex(r".*/(\d{6})(?:\.page|\.pp-deskew|\.pp-clean)\.png"),
output=os.path.join(options.temp_folder, r'\1.image'),
output=os.path.join(work_folder, r'\1.image'),
extras=[_log, _pdfinfo, _pdfinfo_lock])
def select_image_for_pdf(
infiles,
@@ -533,7 +538,7 @@ def select_image_for_pdf(
@collate(
input=[select_image_for_pdf, ocr_tesseract],
filter=regex(r".*/(\d{6})(?:\.image|\.hocr)"),
output=os.path.join(options.temp_folder, r'\1.rendered.pdf'),
output=os.path.join(work_folder, r'\1.rendered.pdf'),
extras=[_log, _pdfinfo, _pdfinfo_lock])
def render_page(
infiles,
@@ -556,7 +561,7 @@ def render_page(
input=repair_pdf,
filter=suffix('.repaired.pdf'),
output='.pdfa_def.ps',
output_dir=options.temp_folder,
output_dir=work_folder,
extras=[_log])
def generate_postscript_stub(
input_file,
@@ -567,7 +572,7 @@ def generate_postscript_stub(
@merge(
input=[render_page, generate_postscript_stub],
output=os.path.join(options.temp_folder, 'merged.pdf'),
output=os.path.join(work_folder, 'merged.pdf'),
extras=[_log, _pdfinfo, _pdfinfo_lock])
def merge_pages(
input_files,
@@ -674,7 +679,7 @@ def validate_pdfa(
# @active_if(ocr_required and options.exact_image)
# @merge([render_hocr_blank_page, extract_single_page],
# os.path.join(options.temp_folder, "%04i.merged.pdf") % pageno)
# os.path.join(work_folder, "%04i.merged.pdf") % pageno)
# def merge_hocr_with_original_page(infiles, output_file):
# with open(infiles[0], 'rb') as hocr_input, \
# open(infiles[1], 'rb') as page_input, \