Skip to content

710: csv-external is inside a repeat reports error with xml_instance#857

Open
lindsay-stevens wants to merge 19 commits into
XLSForm:masterfrom
lindsay-stevens:pyxform-710
Open

710: csv-external is inside a repeat reports error with xml_instance#857
lindsay-stevens wants to merge 19 commits into
XLSForm:masterfrom
lindsay-stevens:pyxform-710

Conversation

@lindsay-stevens

Copy link
Copy Markdown
Contributor

Closes #710

Why is this the best possible solution? Were any other approaches considered?

Branch based on deps-update / PR 853 branch so only commit d414910 and later are relevant.

This PR includes three commits that allow for selecting the preferred approach:

  1. The minimal fix + tests
  2. A minor refactor to tidy up the relevant code in section.py
  3. Adding a validation check + error when a csv-external or xml-external is inside a repeat, as described in the commit message:

There doesn't seem to be any reason for it to be allowed, but it does seem like the sort of thing that might be useful in future for scoping instances or entities so disallowing it now leaves that use case open (as opposed to warning (for no strong reason) and then potentially requiring forms to be updated later).

What are the regression risks?

None / low - fixes a reported bug.

Does this change require updates to documentation? If so, please file an issue here and include the link below.

Potentially - if csv-external and xml-external are not allowed in repeats then the docs / XLSForm template could mention that.

Before submitting this PR, please make sure you have:

  • included test cases for core behavior and edge cases in tests
  • run python -m unittest and verified all tests pass
  • run ruff format pyxform tests and ruff check pyxform tests to lint code
  • verified that any code or assets from external sources are properly credited in comments

- resolve new warnings on RUF059 (unused vars) and B017 (broad err).
- re-checked commented out rules with ruff version markers, and the
  noted issues are still present, so updated the noted version.
- removes strenum copy which is only present in py3.11+ so that change
  is not backwards compatible. However, ruff warns that keeping it no
  good either since StrEnum exists in py311.
- refurb "A tool for refurbishing and modernizing Python codebases."
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- D415 is a bit strange when it comes to indented inline code blocks,
  so added backticks for those cases as well as URLs.
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- the full pydocstyle ruleset has many changes so enabling some of them
  individually to keep the diffs manageable.
- The previous few commits selectively enabled the pydocstyle rules that
  resulted in changes that seemed reasonable to accept now.
- The rules now in the ignore list are ones that would require a lot of
  manual rewrites (most of them have dozens of hits).
- So this rearrangement enables other potentially useful pydocstyle
  rules that aren't currently triggering changes or warnings.
- `flynt is a command line tool to automatically convert a project's
   Python code from old "%-formatted" and .format(...) strings into
   Python 3.6+'s "f-strings".`
- conversion result in next commit so that file history is kept.
- used `pandoc --wrap=preserve -f rst -t gfm README.rst -o README.md`
  - markdown easier to remember and maintain
- fixed grammatical error L112 "in a easily navigable format"
- removed badges since this info is available on the same page as the
  readme (either GitHub or PyPI) and so one less thing to update.
- use isinstance instead of hasattr so it's clearer what object types
  the code is relevant to (L141, L168, L175).
- move "generate_repeating_template" into RepeatingSection since the
  method is only applicable to this type.
- this didn't work anyway, until a couple of commits ago.
- there doesn't seem to be any reason for it to be allowed, but it does
  seem like the sort of thing that might be useful in future for
  scoping instances or entities so disallowing it now leaves that use
  case open (as opposed to warning (for no strong reason) and then
  potentially requiring forms to be updated later).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

csv-external is inside a repeat reports error with xml_instance

1 participant