CORE-000305 crashes ("argument of type 'float' is not iterable") when --DUR is empty on some records
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Domain
- backend, testing-qa
Research direction
Start with DataframeType.contains in check_operators/dataframe_operators.py and trace how it calls vectorized_is_in for empty values. Use the attached sample data and CLI command to reproduce CORE-000305, then check the rule execution result for rows with empty TEDUR. Done means validation completes without an exception and the P28D value is not reported as negative.
Written by the indexing model from the issue text.
Description
Standard
CDISC SDTM/SDTMIG
Reference Rule ID(s)
FB4005
Conformance Rule ID(s) (if published in CORE)
CORE-000305
JIRA Ticket
https://jira.cdisc.org/projects/CORERULES/issues/CORERULES-
CLI Command Used (if applicable)
python core.py validate -s sdtmig -v 3-4 -ct sdtmct-2026-03-27 -d issue4_core_000305 -r CORE-000305 -of JSON
Rule YAML
Check:
all:
- name: --DUR
operator: non_empty
- name: --DUR
operator: contains
value: "-"
Attach any sample test data file(s)
issue4_core_000305.zip issue4_core_000305/te.json and dm.json (attached zip). TE has 4 elements: TEDUR = P28D for the first, empty for the other three (no fixed length).
Attach any output report and/or log file(s)
CORE-000305 TE rule execution error - An unknown exception has occurred
argument of type 'float' is not iterable
Expected output
No issue. TEDUR is permissible and can be empty when an element has no planned duration. The only value given (P28D) is not negative.
Any Additional Information
The rule crashes because some TEDUR values are empty. The "contains" check runs on every row, including the empty ones. Empty values are read as NaN (a number), and checking whether "-" is inside a number raises the error.
Likely fix: treat empty values as "does not contain", or only run the contains check on rows that pass non_empty. Code location: DataframeType.contains in check_operators/dataframe_operators.py (around line 600), via vectorized_is_in.
This will affect any --DUR variable that is only partly filled, which is common.
- Dominant language
- Python
- Stars
- 125
- Forks
- 50
- Avg merge
- 7h 40m
- Merged PRs (30d)
- 14
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cdisc-org/cdisc-rules-engine
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
cdisc-org/cdisc-rules-engine#1891 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
cdisc-org/cdisc-rules-engine#1848 · 1 comment ·
Maintainers usually reply within 1 day
-
SKIPPED rules have no reason in the XLSX or JSON report, though the FAQ says they doPossibly taken @SFJohnson24 claimed this 2 days ago. Openreporting
Difficulty 3/5 1-2 days Newbie friendliness 65/100
cdisc-org/cdisc-rules-engine#1897 · 1 assignee ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 Half a day Newbie friendliness 65/100
cdisc-org/cdisc-rules-engine#1894 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
cdisc-org/cdisc-rules-engine#1893 ·
Maintainers usually reply within 1 day
All issues in cdisc-org/cdisc-rules-engine
Similar issues
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gke-labs/kube-agents#5671 ·
Maintainers usually reply within 1 day
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Opendocumentation next-release v0.9.6
Difficulty 1/5 Under an hour Newbie friendliness 88/100
khuisman/mcp-gee-sweet#1446 ·
Maintainers usually reply within 1 day
-
model:sonnet runtime:claude security size:S
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FootprintAI/Containarium#3671 ·
Maintainers usually reply within 1 day
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysPossibly taken @shikhabhadoria claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
vacanza/holidays#4116 · 1 comment ·
Maintainers usually reply within 1 day
-
bug CLI exec
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day