Pyxform Changelog v4.5.0, 2026-06-25 * Leading and trailing spaces in parameters lead to form error by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/845 * Add support for reference geometry for geo questions by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/847 * Support vertical and no-ticks for new range parameters by @lognaturel in https://github.com/XLSForm/pyxform/pull/849 * Fix reference-geometry from repeat by @lognaturel in https://github.com/XLSForm/pyxform/pull/848 v4.4.1, 2026-04-12 * Insert itemset declaration for range labels by @lognaturel in https://github.com/XLSForm/pyxform/pull/836 v4.4.0, 2026-04-02 * Add configurability to range question type by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/832 v4.3.1, 2026-03-14 * Fix forms with save_tos across groups by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/827 v4.3.0, 2026-03-05 * Update identifier validation message now that leading colons aren't allowed by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/795 * Remove warning for groups without label by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/801 * Allow declaring that multiple Entities should be created/updated by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/818 v4.2.0, 2026-01-08 * Fix 'NoneType is not iterable' error for group with no children by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/787 * Indicate which sheet a ${} replacement error comes from by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/789 * Fix support for a source referencing an ancestor repeat target by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/794 * Allow ${instanceID} reference for longitudinal / entities workflows by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/805 * Incremental parameter for geotrace and geoshape by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/808 * Update Validate to v1.20.0 by @lognaturel in https://github.com/XLSForm/pyxform/pull/810 v4.1.0, 2025-10-20 * Restore pre-py3.13 xml attribute escaping behaviour for \r\n\t by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/772 * Update dependencies by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/774 * Accept a list of references in the trigger column by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/776 * Process triggers for all question types by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/780 * Handle None from fullmatch reference regex by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/782 * Improve relative references in repeats by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/777 * Support Entities from repeats by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/778 v4.0.0, 2025-06-09 * Case insensitivity of sheet, column, and setting names; plus more performance improvements by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/746 * Ensure labels are visible for randomized selects with translations by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/764 * Add client_editable setting by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/766 * Support for / test with python 3.13 by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/768 v3.1.0, 2025-06-10 * Add client_editable setting by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/766 v3.0.1, 2025-02-25 * More performance improvements by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/743 * Handle obj.get(k, default) call pattern for backward compatibility by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/755 v3.0.0, 2024-12-09 * Include all choice lists in output by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/736 * Improve complex forms performance (includes changes to JSON representation) by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/740, https://github.com/XLSForm/pyxform/pull/742 * Always produce entity forms with the offline entities spec version by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/732 v2.2.0, 2024-10-29 * Add `background-geopoint` question type which exposes `xforms-value-changed` event with `odk:setgeopoint` action by @RuthShryock in https://github.com/XLSForm/pyxform/pull/726 * 724: raise an error if a `${}` pyxform reference is malformed by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/734 v2.1.1, 2024-10-09 * Update Validate to fix support for geojson by @lognaturel in https://github.com/XLSForm/pyxform/pull/727 v2.1.0, 2024-09-05 * Require Python 3.10, 3.11 or 3.12 by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/706 * Detect instance expressions with double quotes by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/709 * Library API for non-path input, accept markdown and dict input by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/712 * Allow whitespace on either side of main header delimiter by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/718 * Support offline entities spec v2024.1.0 via opt-in setting by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/719 * Fix installed script name so `xls2xform` can be used by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/722 * Upgrade Validate for `extract-signed`, `geofence` functions and new `distance` variants by @lognaturel in https://github.com/XLSForm/pyxform/pull/723 v2.0.3, 2024-04-18 * Don't use regex to clean up XML following pretty-printing by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/681 * dev: update dependencies, testing, packaging, and linting/formatting by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/685 * Address search and pulldata secondary instance conflict by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/697 * Include project status and related work in readme by @lognaturel in https://github.com/XLSForm/pyxform/pull/700 v2.0.2, 2024-01-26 * Generate translations for choice list used with search() by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/690 v2.0.1, 2024-01-22 * Add itextId node to instance items for choice list names with dashes in multilingual forms by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/680 * Add test for allowed duplicate choices with translations by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/682 * Refactor PyxformTestCase to use explicit keyword arguments by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/677 * Set select or_other label to "Other" instead of "-" in multilanguage forms by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/687 v2.0.0, 2023-12-05 * Always generate secondary instance for selects by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/614 * Fix or_other + translations + group or repeat by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/650 * Detect instance() expressions in notes and make them into outputs by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/648 * Upgrade Validate by @lognaturel in https://github.com/XLSForm/pyxform/pull/658 * Add support for specifying a custom camera app for image questions by @grzesiek2010 in https://github.com/XLSForm/pyxform/pull/659 * Add rows to parameters column for text type by @grzesiek2010 in https://github.com/XLSForm/pyxform/pull/667 * Reject form with unknown columns in entities sheet by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/671 * Nicer error about choices sheet when extension omitted in select_.._from_file by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/673 * Fix _count suffix name clash with repeats targeting another item by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/674 * Preserve order of columns when building secondary instance by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/672 * Detection of multilanguage choices only works if first choice list is multilanguage by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/666 * Tidy up is_label_dynamic to return condition directly by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/675 v1.12.2, 2023-09-15 * Alias list_name to dataset in entities sheet by @lognaturel in https://github.com/XLSForm/pyxform/pull/654 v1.12.1, 2023-05-16 * Pass through itemset ref case by @lognaturel in https://github.com/XLSForm/pyxform/pull/644 v1.12.0, 2023-01-19 * Add support for big-image by @lognaturel in https://github.com/XLSForm/pyxform/pull/635 * Show error when there are `save_to`s in a repeat, simplify entities tests by @lognaturel in https://github.com/XLSForm/pyxform/pull/636 * Ignore media column if it is present by @lognaturel in https://github.com/XLSForm/pyxform/pull/638 # v1.11.1, 2022-11-18 * Add __init__.py to `entities` package by @lognaturel in https://github.com/XLSForm/pyxform/pull/628 # v1.11.0, 2022-11-18 * Accept more empty rows before stopping by @yanokwa in https://github.com/XLSForm/pyxform/pull/621 * Add initial support for entity creation by @lognaturel in https://github.com/XLSForm/pyxform/pull/624 # v1.10.1, 2022-06-24 * avoid processing vast empty areas of buggy / strange workbooks by @lindsay-stevens in https://github.com/XLSForm/pyxform/pull/612 # v1.10.0, 2022-04-25 * https://github.com/XLSForm/pyxform/pull/578 Add a lexer to identify dynamic defaults in expressions vs. strings * https://github.com/XLSForm/pyxform/pull/607 Fix survey json->xml round trip not working for some question types # v1.9.0, 2022-03-16 * https://github.com/XLSForm/pyxform/pull/577 Add value and label params to select_.._from_file * Lindsay Stevens @lindsay-stevens (ODK) * https://github.com/XLSForm/pyxform/pull/594 Add support for geojson external files * Hélène Martin @lognaturel (ODK) * https://github.com/XLSForm/pyxform/pull/596 Use read-only openpyxl representation to reduce memory usage * Hélène Martin @lognaturel (ODK) # v1.8.0, 2022-02-15 * Improve xml hierarchy test methods, refactor test_trigger.py tests to use them by @lindsay-stevens in #570 * Use openpyxl for XLSX files; upgrade xlrd to v2 by @sheppard in #575 * Add support for Python 3.9 by @lindsay-stevens in #580 * Warn when languages are missing translations by @lindsay-stevens in #571 * Add accuracy parameters for geopoint by @lognaturel in #586 # v1.7.0, 2021-10-20 * #545 Add allow-mock-accuracy parameter * Callum Sott @seadowg (ODK) * #560 Add default value support for image questions * Vincent Buscarello @KeynesYouDigIt * #559 Avoid recursion depth error for label with many references * Lindsay Stevens @lindsay-stevens (ODK) * #548 Add test methods to check xml hierarchy * Lindsay Stevens @lindsay-stevens (ODK) * #562 Clean up dependencies, remove py2 code, remove py3.6 support * Lindsay Stevens @lindsay-stevens (ODK) # v1.6.0, 2021-09-01 * #547 Fix parsing of (multiple) pulldata calls in a (multi-line) expression * Lindsay Stevens @lindsay-stevens (ODK) * #545 Do not warn about labels when using an unlabeled groups * Yaw Anokwa @yanokwa (ODK) * #544 Levenshtein distance warning for sheet name misspellings * Lindsay Stevens @lindsay-stevens (ODK) * #543 Output empty label instead of omitting it * Lindsay Stevens @lindsay-stevens (ODK) * #541 Fix windows test failures related to temp file creation by Validate * Lindsay Stevens @lindsay-stevens (ODK) * #540 Remove Java version check * Lindsay Stevens @lindsay-stevens (ODK) # v1.5.1, 2021-05-18 * #535 Don't check for dynamic label if there is no label * Hélène Martin @lognaturel (ODK) * #536 Expand refs in predicates using current() even if preceded by whitespace * Agus Hilman @gushil (OpenClinica) # v1.5.0, 2021-04-16 * #521 Use itext for dynamic selects with dynamic labels * Agus Hilman @gushil (OpenClinica), Hélène Martin @lognaturel (ODK) * #522 Add support for csv-external * Hélène Martin @lognaturel (ODK) * #526 Warning for dynamic defaults now more annoying than helpful * Yaw Anokwa @yanokwa (ODK) * #524 ${} references in predicates should be expanded using current() * Agus Hilman @gushil (OpenClinica) * #529 Apply section name check to sections only * John Milner @jnm (KoBo) * #516 Generate correct reference when selecting choices from current repeat question * Davis Raymond @DavisRayM (Ona) # v1.4.0, 2021-02-23 * #514 Fix circular reference error raised when converting an XLSX form with multiple languages to JSON * Davis Raymond @DavisRayM (Ona) * #519 Add support for odk:recordaudio * Callum Stott @seadowg (ODK) # v1.3.4, 2021-01-15 * #510 Show a more helpful error message is section name is equal to form name * Agus Hilman @gushil (OpenClinica) * #507 Fixed KeyError that occurs with some dynamic default expressions * Agus Hilman @gushil (OpenClinica) * #484 Use absolute path for first argument in indexed-repeat() output * Agus Hilman @gushil (OpenClinica) # v1.3.3, 2020-12-17 * #500 Use same versions as requirements.pip to prevent unexpected upgrades * Yaw Anokwa @yanokwa (ODK) * #498 Add warning for images without max-pixel * Yaw Anokwa @yanokwa (ODK) # v1.3.2, 2020-12-15 * #496 Add warning for images without max-pixel * Yaw Anokwa @yanokwa (ODK) # v1.3.1, 2020-12-09 * #493 Make value ref dynamic for selects from repeats * Hélène Martin @lognaturel (ODK) # v1.3.0, 2020-12-08 * #478 Output absolute ref attribute in trigger referring to repeat question * Agus Hilman @gushil (OpenClinica) * #483 Add audio quality parameters * Callum Stott @seadowg (ODK) * #485 Use absolute paths in `indexed-repeat` call in repeat * Agus Hilman @gushil (OpenClinica) * #489 Prevent untyped calculates from being used as calculation triggers * Hélène Martin @lognaturel (ODK) * #487 Support ref in constraint and required messages with single language * Hélène Martin @lognaturel (ODK) # v1.2.1, 2020-11-14 * #479 Java versions can have patch versions * Yaw Anokwa @yanokwa (ODK) # v1.2.0, 2020-09-10 * #436 support another java version string for 9-internal * @kenhorn * #438 Add "trigger" column to use value changes as triggers for calculations * Agus Hilman @gushil (OpenClinica) and Hélène Martin @lognaturel (Nafundi) * #70 Add non-string calculation types * Agus Hilman @gushil (OpenClinica) and Hélène Martin @lognaturel (Nafundi) * #458 New non-text calculations output a missing-label warning * Agus Hilman @gushil (OpenClinica) * #456 Fix calculate with dynamic default * Agus Hilman @gushil (OpenClinica) * #457 Triggers referring to hidden question will produce an error * Agus Hilman @gushil (OpenClinica) * #450 Fixed inside repeat has absolute path instead of relative * Agus Hilman @gushil (OpenClinica) * #468 Fixed duplicate label translations for secondary itemsets and use itextID for selects with choices that have media specified * Davis Raymond @DavisRayM (Ona) # v1.1.0, 2020-02-17 * #429 Adding a hash to properly route to the choicenames url * Zach Weed @zachhweed * #430 Add odk:xforms-version="1.0.0" attribute to * Martijn van de Rijdt @MartijnR (Enketo) * #431 Put setvalue action for repeats in the body * Hélène Martin @lognaturel (Nafundi) # v1.0.1, 2020-02-06 * #423 Update to ODK Validate v1.14.0 * Hélène Martin @lognaturel (Nafundi) # v1.0.0, 2020-02-06 * #357 Add list_name to generated JSON to get static choice list * Carlos Quiros @qlands (QLands Technology Consultants) * #372 Add support for Java versions that don't have dots in them * Yaw Anokwa @yanokwa (Nafundi) * #289 Do not generate dummy instance content for external instances * Vincent Buscarello @KeynesYouDigIt (Devetry) * #378 Fix black configuration for CircleCI * Nyoman Ribeka @nribeka (DIAL) * #375 Use data as the default root node name instead of the filename * Nyoman Ribeka @nribeka (DIAL) * #384 If there is only one sheet, use that as the survey sheet * Nyoman Ribeka @nribeka (DIAL) * #376 Don't generate translation blocks if there is only one language * Nyoman Ribeka @nribeka (DIAL) * #386 Expand XPath references in upload questions * James Tedrick @tedrick (ESRI) * #389 Use the filename as the form_id if no explicit form_id is set by settings * Nyoman Ribeka @nribeka (DIAL) * #392 Add identify-user audit attribute * Callum Stott @seadowg (Nafundi) * #397 Better Python 2/3 unicode support for ODKValidateError strings * Yaw Anokwa @yanokwa (Nafundi) * #402 Create instance of NullHandler, instead of class reference * Brendan Zerr @axonxorz * #400 Add track-changes-reasons audit attribute * Callum Stott @seadowg (Nafundi) * #385 Add support for dynamic defaults * Nyoman Ribeka @nribeka (DIAL) * #382 Fix crash when displaying ODK Validate errors * Nyoman Ribeka @nribeka (DIAL) * #380 Add repeat instance in addition to template to the model * Nyoman Ribeka @nribeka (DIAL) * #408 Remove Python 2.7, 3.5 and 3.6 support, add Python 3.8 * Yaw Anokwa @yanokwa (Nafundi) * #412 Preserve attribute ordering across all Python versions * Yaw Anokwa @yanokwa (Nafundi) * #406 Identify first argument of pulldata by splitting on comma * Hélène Martin @lognaturel (Nafundi) * #410 Output a string bind type for selects * Yaw Anokwa @yanokwa (Nafundi) * #418 Clarify duplicate choice error message * Hélène Martin @lognaturel (Nafundi) * #417 Add support for last-saved * Hélène Martin @lognaturel (Nafundi) v0.15.1, 2019 09 19 -- Conversion fails if label has language and choice_filter is used Issue #355, https://github.com/XLSForm/pyxform/issues/355 [lognaturel] -- Revert Google Sheets warning on underscores - underscores are supported, Issue #356, https://github.com/XLSForm/pyxform/issues/356 [yanokwa] -- Run ODK Validate on SetGeopointTest.test_setgeopoint Issue #351, https://github.com/XLSForm/pyxform/issues/351 [yanokwa] -- Upgrade to ODK Validate v1.13.2 Issue #360, https://github.com/XLSForm/pyxform/issues/360 [yanokwa] -- Remove debug in tests. Issue #361, https://github.com/XLSForm/pyxform/issues/361 [yanokwa] -- Run codecov in subshell to prevent blocking build Issue #363, https://github.com/XLSForm/pyxform/issues/363 [yanokwa] -- Fix spelling and update failing tests Issue #358, https://github.com/XLSForm/pyxform/issues/358 [yanokwa] -- 2 translated media labels outputs a 3rd (default) language Issue #32, https://github.com/XLSForm/pyxform/issues/32 [ukanga] -- Documentation on pyxform release process Issue #350, https://github.com/XLSForm/pyxform/issues/350 [ukanga] v0.15.0, 2019 08 11 -- Report the name of a not closed control Issue #318, https://github.com/XLSForm/pyxform/issues/318 [qlands] -- Warn about setting a default language Issue #157, https://github.com/XLSForm/pyxform/issues/157 [KeynesYouDigIt] -- Spelling fix Issue #340, https://github.com/XLSForm/pyxform/issues/340 [yanokwa] -- Running from terminal in Mac rearranges desktops. Run java headless. Issue #208, https://github.com/XLSForm/pyxform/issues/208 [yanokwa] -- Add Validate v1.13.1 with JavaRosa v2.15.0 Issue #342, https://github.com/XLSForm/pyxform/issues/342 [yanokwa] -- Add geopoint-start to generate setgeopoint action triggered by the odk-instance-first-load event Issue #336, https://github.com/XLSForm/pyxform/issues/336 [yanokwa] -- Throw error if external_choices list is not found Issue #220, https://github.com/XLSForm/pyxform/issues/220 [WinnyTroy] v0.14.1, 2019 07 14 -- Fix bug - generation of blank itemset.csv iintroduced in v0.14.0. Issue #326, https://github.com/XLSForm/pyxform/issues/326 [WinnyTroy] -- Remove deprecated method="form-data-post" Issue #215, https://github.com/XLSForm/pyxform/issues/215 [WinnyTroy] -- Error on duplicate choice list values Issue #23, https://github.com/XLSForm/pyxform/issues/23 [WinnyTroy] -- Turn pretty print XML is off by default. Issue #162, https://github.com/XLSForm/pyxform/issues/162 [p-netm] -- Switch to openjdk-11-jre-headless for java in CircleCI Issue #332, https://github.com/XLSForm/pyxform/issues/332 [ukanga] v0.14.0, 2019 06 24 -- Add codecov integration for tests Issue #259, https://github.com/XLSForm/pyxform/issues/259 [shobhitagarwal1612] -- Build artifacts on CircleCI Issue #284, https://github.com/XLSForm/pyxform/pull/284 [shobhitagarwal1612] -- ELiminate repetition in tests Issue #231, https://github.com/XLSForm/pyxform/issues/231 [WinnyTroy] -- Add check for java8 or later Issue #257, https://github.com/XLSForm/pyxform/issues/257 [code-player] -- Clear invalid filename error message Issue #22, https://github.com/XLSForm/pyxform/issues/22 [lincmba] -- Add tests to confirm hints are displayed in repeats and groups Issues #73 and #74, https://github.com/XLSForm/pyxform/issues/73, https://github.com/XLSForm/pyxform/issues/74 [WinnyTroy] -- Strip spaces from headers Issue #13, https://github.com/XLSForm/pyxform/issues/13 [lincmba] -- Add warnings to or_other users about Google Sheets compatibility Issue #270, https://github.com/XLSForm/pyxform/issues/270 [lincmba] -- External choices with integers in names/values are converted to decimals Issue #123, https://github.com/XLSForm/pyxform/issues/123 [WinnyTroy] -- Clearer warning when both form_id and id_string are present in settings sheet Issue #224, https://github.com/XLSForm/pyxform/issues/224 [WinnyTroy] -- Set default output_path Issue #227, https://github.com/XLSForm/pyxform/issues/227 [p-netm] -- XLDateAmbiguous: Error message could be better Issue #228, https://github.com/XLSForm/pyxform/issues/228 [WinnyTroy] -- Use black for code formatting Issue #306, https://github.com/XLSForm/pyxform/pull/306 [ukanga] -- XLSForm "yes" --> XForm "true()", even for custom bind::'s Issue #226, https://github.com/XLSForm/pyxform/issues/226 [yanokwa] -- Add support for track-changes Issue #305, https://github.com/XLSForm/pyxform/pull/305 [yanokwa] -- Change /meta/instanceID binding to use preload "uid" Issue #94, https://github.com/XLSForm/pyxform/issues/94 [yanokwa] -- Add Validate v1.12.0 with JavaRosa v2.14.0 Issue #320, https://github.com/XLSForm/pyxform/pull/320 [yanokwa] -- Add external instance if pulldata() is used in constraint, required, readonly, relevant expressions Issue #308, https://github.com/XLSForm/pyxform/pull/308 [p-netm] -- Remove Python 3.4 CI because its EOL Issue #312, https://github.com/XLSForm/pyxform/pull/312 [yanokwa] v0.13.1, 2019 02 19 -- Ensure parameters are typed properly Issue #267, https://github.com/XLSForm/pyxform/pull/267 [yanokwa] v0.13.0, 2019 02 19 -- Add Validate v1.11.0 with JavaRosa v2.13.0 Issue #264, https://github.com/XLSForm/pyxform/issues/264 [yanokwa] -- Add audit location support Issue #253, https://github.com/XLSForm/pyxform/issues/253 [yanokwa] -- Enable CircleCI support, remove Travis Issue #262, https://github.com/XLSForm/pyxform/issues/262 [yanokwa] -- Support Excel workbook with macro XLSForm files i.e .xlsm Issue #252, https://github.com/XLSForm/pyxform/issues/252 [bmarika] v0.12.2, 2019 01 06 -- Correct environment marker in requirements.pip [ukanga] v0.12.1, 2019 01 06 -- Performance Regression fix on using relative paths. Issue #247, https://github.com/XLSForm/pyxform/issues/247 [ukanga] -- Additional appearance values are supported with table-list. Issue #61, https://github.com/XLSForm/pyxform/issues/61 [KeynesYouDigIt] v0.12.0, 2018 12 09 -- Upgrade to ODK Validate v1.10.3 Issue #225, https://github.com/XLSForm/pyxform/issue/225 [ukanga] -- Process only standard XLSForm sheets Issue #229, https://github.com/XLSForm/pyxform/issue/229 [ukanga] -- Add relative referencing Issue #4, https://github.com/XLSForm/pyxform/issue/4 [ukanga] -- Fix randomize with dynamic seed value throws error Issue #238, https://github.com/XLSForm/pyxform/issue/238 [ggalmazor] -- Update choice filter JSON representation Issue #234, https://github.com/XLSForm/pyxform/issue/234 [lincmba] -- Make sure that the json scheme is a valid json Issue #223, https://github.com/XLSForm/pyxform/issue/223 [HaidarZ] -- Skip over non-strings when replacing smart quotes Issue #236, https://github.com/XLSForm/pyxform/issue/236 [jnm] -- Updated outdated language reference xlsform.org url Issue #221, https://github.com/XLSForm/pyxform/issue/221 [tinok] v0.11.5, 2018 07 22 -- Add support for SMS prefix, delimiter and tag, Issue #207, https://github.com/XLSForm/pyxform/issues/207 [lognaturel] v0.11.4, 2018 07 10 -- Upgrade to ODK Validate v1.10.1 Issue #212, https://github.com/XLSForm/pyxform/issues/212 [yanokwa] v0.11.3, 2018 07 04 -- Set mediatype for file to application/* Issue #194, https://github.com/XLSForm/pyxform/issues/194 [lognaturel] -- Add support for randomizing select Issue #183, https://github.com/XLSForm/pyxform/issues/183 [lognaturel] -- Add max-pixels parameter for images Issue #137, https://github.com/XLSForm/pyxform/issues/137 [lognaturel] -- Add support for guidance hints Issue #142, https://github.com/XLSForm/pyxform/issues/142 [lognaturel] -- Add python versions support policy to readme Issue #201, https://github.com/XLSForm/pyxform/pull/201 [KeynesYouDigIt] v0.11.2, 2018 04 20 -- Fix startupinfo flags not set properly due to misnamed variable Issue #195, https://github.com/XLSForm/pyxform/pull/195 [yanokwa] v0.11.1, 2018 04 09 -- Add iana_subtags.txt to package, Issue #191, https://github.com/XLSForm/pyxform/issues/191 [yanokwa] v0.11.0, 2018 04 05 -- Code cleanup, remove no-op XML formatting code Issue #148, https://github.com/XLSForm/pyxform/pull/148 [alxndrsn] -- Workarounds for PyInstaller on Windows Issue #166, https://github.com/XLSForm/pyxform/pull/166 [yanokwa] -- Add type=xml-external Issue #107, https://github.com/XLSForm/pyxform/issues/107 [lindsay-stevens] -- Add Enketo Validate, you can now validate XForms with Enketo's form engine - https://github.com/enketo/enketo-validate. Issue #163, https://github.com/XLSForm/pyxform/issues/163 [lindsay-stevens] -- Added odk XML namespace xmlns:odk Issue #172, https://github.com/XLSForm/pyxform/pull/172 [Archaejohn] -- Error message formatting update Issue #173, https://github.com/XLSForm/pyxform/pull/173 [yanokwa] -- Add support for auto_send and auto_delete settings Issue #126, https://github.com/XLSForm/pyxform/issues/126 [lognaturel] -- Fixed Python3 unchr is not defined in pyxform/utils.py error Issue #161, https://github.com/XLSForm/pyxform/issues/161 [shivareddyiirs] -- Handle ODK Validate error strings with unicode Issue #72, https://github.com/XLSForm/pyxform/issues/72 [lognaturel] -- Error on question names with same name different cases Issue #174, https://github.com/XLSForm/pyxform/issues/174 [moshthepitt] -- Warn on languanges that don't have a valid IANA subtag Issue #143, https://github.com/XLSForm/pyxform/issues/143 [lognaturel] -- Python 3 encoding check Issue #186, https://github.com/XLSForm/pyxform/pull/186 [pld] -- Upgrade to ODK Validate v1.9.0 Issue #188, https://github.com/XLSForm/pyxform/pull/188 [lognaturel] v0.10.0, 2017 11 08 -- Add support for numeric range questions (Issue #79) -- Upgrade ODK Validate 1.8.0 -- Support `list_name` in osm sheet (Issue #109) -- Whitespace after output variables should not be trimmed (Issue #96) -- Test pyxform in windows with AppVeyor CI (Issue #125) -- Updated install instructions -- Fix external instance URI to take the documented form of jr://file-xml/data.xml (Issue #106) -- Fix validation errors with external instances (Issue #87) -- Support for audit (Issue #128) -- XLSForm column headers case insenstive -- Add --no_pretty_xml option -- Add calculate as alias for calculation column v0.9.24, 2016 10 26 -- ensure intent is included as an attribute to a group -- update xlrd version -- use built-in xml.etree rather than lxml -- python 3.5 compat (py2.7 still OK), pep8, cleanup -- use label for selects from file label references v0.9.23, 2016 01 11 -- add additional namespaces to the XForm -- add support for external instances -- encode question_name -- We should not inject default hints into forms -- new: xls2xform command line argument to skip validate -- test for enclosed-area() function -- ODK Validate 1.4.6 -- Adding support for attribute columns -- pep8 indentation -- include instance with reference to csv file for pulldata() calculate bindings -- BSD 2-Clause License -- Support writing settings attributes to first node inside instance -- add type=file -- [PyxformTestCase] Replacing "geo widgets" -- introduce PyxformTestCase which uses markdown defined XLSForms -- support osm tags -- remove trailing slash from xforms namespace -- fixing equivalency test (Better error message when list name = type) -- Fix issue causing exponential exposure v0.9.22 -- Adding support for attribute columns -- Update to the 1.4.4 build of ODK Validate -- Adding external itemset support v0.9.21, 2014 05 08 -- update to ODK Validate 1.4.3 -- interim add of geoshape and geotrace prompts -- add data preload with pulldata function -- add search and select v0.9.20, 2014 01 27 -- use style column to defined body class attribute v0.9.19, 2014 01 13 -- add class attribute to body tag - theme support for enketo -- add --json flag to output error messages in JSON format, danielfdsilva -- xform2json: convert lable obj with no reference/translation to text -- xform2json: set id_string from model/instance/id path -- xform2json: remove comments when parsing xml file v0.9.18, 2013 06 10 -- col header warnings + adding instance flattening tag v0.9.17, 2013 04 26 -- experimental xform to json v0.9.16, 2013 04 26 -- changed sms field names v0.9.15, 2013 04 26 -- missing preload fields: username and email -- typo fixes v0.9.14, 2013 03 27 -- add support for sms fields v0.9.13, 2013 03 26 -- remove java elements in exception during odk validate. v0.9.12, 2013 03 23 -- better error reporting in missing headers, missing calculations -- support for rows column v0.9.11, 2013 03 20 -- cascade as a required field support -- bind: relvant with white space ignored v0.9.10, 2013 02 15 -- bug fixes. v0.9.9.1, 2013 01 24 -- bug fix on old xls cascade format support. v0.9.9, 2013 01 22 -- InstanceId always added, new cascade format support. v0.9.8, 2012 10 12 -- Include xmlns for instances. v0.9.7, 2012 ?? ?? -- Undocumented. v0.9.6, 2012 06 21 -- Including necessary java files. v0.9.5, 2012 06 21 -- Initial PyPI release.