chore(plating): de-dash shipped code + intake-neutral customer emails
Replace em-dashes and en-dashes with hyphens across 789 shipped source files (py/xml/js/scss) so the delivered module reads as human-written; em-dashes had become a recognizable AI-generated tell. Internal .md dev notes are excluded. The WO-sticker mojibake strippers keep their dash search targets (now written — / –). No logic changes: comments and display strings only; validated with py_compile + lxml parse. Rewrite the 7 customer notification emails to be intake-neutral (ship-in / drop-off / pickup) and repair-aware, and fix the Shipped email documents line (packing slip vs bill of lading; certificate only when issued). Subjects use a hyphen separator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ _logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Regexes — derived from the real Fischerscope XDAL 600 export layout.
|
||||
# Regexes - derived from the real Fischerscope XDAL 600 export layout.
|
||||
# Sample line:
|
||||
# n= 1 NiP 1= 0.6885 mils Ni 1 = 91.323 % P 1 = 8.6771 %
|
||||
# Spaces vary; allow flexible whitespace + optional channel digit after NiP/Ni/P.
|
||||
@@ -37,7 +37,7 @@ _READING_RE = re.compile(
|
||||
re.VERBOSE,
|
||||
)
|
||||
|
||||
# Equipment model — first non-blank line that contains "Fischerscope" or
|
||||
# Equipment model - first non-blank line that contains "Fischerscope" or
|
||||
# similar gauge identifier. Captures everything up to end of line.
|
||||
_EQUIPMENT_RE = re.compile(
|
||||
r'(Fischerscope[^\n\r]*)',
|
||||
@@ -113,7 +113,7 @@ def parse_fischerscope_file(filename, content_bytes):
|
||||
'errors': [str], # non-fatal warnings encountered
|
||||
}
|
||||
|
||||
Never raises on parse failure — returns success=False with readings=[].
|
||||
Never raises on parse failure - returns success=False with readings=[].
|
||||
Raises only on unrecoverable I/O (e.g. corrupted file bytes).
|
||||
"""
|
||||
name = (filename or '').lower()
|
||||
@@ -125,7 +125,7 @@ def parse_fischerscope_file(filename, content_bytes):
|
||||
return _failed_result(
|
||||
raw_text='',
|
||||
error=(
|
||||
'Legacy .doc format not supported — re-export from the '
|
||||
'Legacy .doc format not supported - re-export from the '
|
||||
'gauge as .docx or .pdf. (python-docx reads .docx only; '
|
||||
'old binary .doc needs LibreOffice conversion which '
|
||||
"isn't installed.)"
|
||||
@@ -149,7 +149,7 @@ def _parse_docx(content_bytes):
|
||||
except ImportError:
|
||||
return _failed_result(
|
||||
raw_text='',
|
||||
error='python-docx not installed — cannot parse .docx files.',
|
||||
error='python-docx not installed - cannot parse .docx files.',
|
||||
)
|
||||
try:
|
||||
doc = docx.Document(io.BytesIO(content_bytes))
|
||||
@@ -157,7 +157,7 @@ def _parse_docx(content_bytes):
|
||||
return _failed_result(raw_text='', error='Could not open .docx: %s' % e)
|
||||
|
||||
# Build the raw text by walking paragraphs AND tables. Fischerscope
|
||||
# exports vary — sometimes the readings are in a table, sometimes
|
||||
# exports vary - sometimes the readings are in a table, sometimes
|
||||
# in justified paragraphs. Joining everything gives the regex a
|
||||
# stable target.
|
||||
parts = []
|
||||
@@ -197,7 +197,7 @@ def _parse_pdf(content_bytes):
|
||||
except ImportError:
|
||||
return _failed_result(
|
||||
raw_text='',
|
||||
error='PyPDF2 not installed — cannot parse .pdf files.',
|
||||
error='PyPDF2 not installed - cannot parse .pdf files.',
|
||||
)
|
||||
try:
|
||||
reader = PdfReader(io.BytesIO(content_bytes))
|
||||
@@ -214,7 +214,7 @@ def _parse_pdf(content_bytes):
|
||||
|
||||
# PDF image extraction is unreliable across PDF producers. Best-
|
||||
# effort: walk page resources looking for /XObject /Image entries.
|
||||
# If anything fails, drop image silently — the operator still has
|
||||
# If anything fails, drop image silently - the operator still has
|
||||
# the original file attached.
|
||||
image_bytes = None
|
||||
image_mime = None
|
||||
|
||||
Reference in New Issue
Block a user