We maintain Sewlore’s sewing tools and have prepared an independent, small Python helper for a particular interchange workflow: bringing a CSV containing explicit units into an individual-measurement file, or exporting a numeric measurement file into a common unit before comparing it with another table.
SeamlyME already has CSV export. This helper’s purpose is the narrower roundtrip and mixed-unit import workflow, with explicit errors and a choice about carrying personal metadata. It is not a replacement for SeamlyME, and it is not an official Seamly extension.
First distinguish the file formats
The official schemas distinguish legacy .vit (<vit>, version 0.3.3) and current .smis (<smis>, version 0.3.4). Merely changing a file extension or writing version 0.3.4 inside a <vit> root does not produce the matching schema. This release accepts those two specific versions and generates a correctly paired root/version. It does not import newer Tape/Valentina formats or multisize tables.
An example you can reproduce without personal data
The bundled CSV is explicitly synthetic:
name,value,unit,full_name,description
bust_circ,840,mm,Bust circumference,Synthetic example only
waist_circ,26,in,Waist circumference,Synthetic example only
hip_circ,96,cm,Hip circumference,Synthetic example only
Running:
python sewlore_measurements.py from-csv examples/mixed-units.csv example-copy.smis --unit cm
creates centimetre values of 84, 66.04 and 96, using 1 inch = 25.4 mm. The identifiers stay unchanged. It is still necessary to check that those identifiers and measurements match what your own pattern expects; a syntactically valid measurement file is not a fitting result.
What is deliberately rejected
This is a numeric interchange tool. It rejects formulas such as bust_circ / 2 rather than trying to evaluate them or incorrectly converting their text between units. Duplicate identifiers, unsupported units, malformed CSV and XML entity declarations also fail with an error. The supported identifier subset is ASCII letters, digits and underscores, beginning with a letter or underscore. The current release does not cover every name permitted by the broader schema.
Keep an original copy and make metadata choices
Output files must have new names; the tool does not overwrite the input or an existing output. Ordinary exports leave out personal information and notes. If you deliberately want to preserve those fields locally, importing with --template original.smis copies the metadata from that editable original. The CSV replaces the complete measurement list, so a partial CSV must not be treated as a patch file. Read-only templates are rejected.
Checks and limitations
The generated examples validate against the official VIT 0.3.3 and SMIS 0.3.4 schemas. Automated checks cover CLI roundtrips, all unit pairs, mixed units, XML escaping, metadata handling and invalid inputs. Roundtrips involving inches write up to 15 significant digits, so insignificant trailing-digit differences can occur. Native interactive opening and saving in SeamlyME has not yet been verified in this environment; please work on a copy and review the result in your installed application.
The code, step-by-step explanation and synthetic files are available here:
Sewlore Measurement Interchange
Sewlore maintains the independent helper. It uses only Python’s standard library, runs locally and has no analytics or network requests. The code and examples are MIT licensed. AI assisted with implementation and documentation; the numerical behavior was checked with automated tests. Feedback on interoperability is welcome, especially examples of unsupported identifiers or versions with personal details removed.