Title: mkconcore.py fails on filenames with multiple dots due to fragile extension parsing · Issue #283 · ControlCore-Project/concore · GitHub
Open Graph Title: mkconcore.py fails on filenames with multiple dots due to fragile extension parsing · Issue #283 · ControlCore-Project/concore
X Title: mkconcore.py fails on filenames with multiple dots due to fragile extension parsing · Issue #283 · ControlCore-Project/concore
Description: The script uses naive .split(".") parsing throughout to extract filename and extension, which breaks on any source file containing multiple dots (e.g., data.processor.py, model.v2.cpp). Root cause: Line 592 (and ~21 other locations) does...
Open Graph Description: The script uses naive .split(".") parsing throughout to extract filename and extension, which breaks on any source file containing multiple dots (e.g., data.processor.py, model.v2.cpp). Root cause:...
X Description: The script uses naive .split(".") parsing throughout to extract filename and extension, which breaks on any source file containing multiple dots (e.g., data.processor.py, model.v2.cpp). R...
Opengraph URL: https://github.com/ControlCore-Project/concore/issues/283
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"mkconcore.py fails on filenames with multiple dots due to fragile extension parsing","articleBody":"The script uses naive [.split(\".\")](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html) parsing throughout to extract filename and extension, which breaks on any source file containing multiple dots (e.g., [data.processor.py](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html), model.v2.cpp).\n\nRoot cause:\n\nLine 592 (and ~21 other locations) does:\n\n`dockername, langext = sourcecode.split(\".\")`\n\nThis assumes filenames contain exactly one dot. When [sourcecode = \"data.processor.py\"](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html), the split returns [[\"data\", \"processor\", \"py\"]](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html), causing the tuple unpack to raise [ValueError: too many values to unpack](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html).\n\nAffected code paths:\n\n- Docker workflow generation (lines 590-830): build, run, stop, clear, maxtime, params, unlock scripts\n\n- POSIX/Windows workflow generation (lines 845-940): build script file copying and compilation\n\n- POSIX/Windows execution scripts (lines 1030-1100): run and debug command generation\n\nThe pattern repeats 22 times across loops that generate shell commands for each node in the workflow graph. Since the failure occurs during the initial script generation phase, mkconcore exits before creating any output.\n\nProposed fix:\n\nReplace all instances with [os.path.splitext()](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html):\n\n```\ndockername, ext_with_dot = os.path.splitext(sourcecode)\nlangext = ext_with_dot[1:] # Remove leading dot\n```\n\nAlternatively, use [sourcecode.rsplit(\".\", 1)](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html) to split from the right, though [splitext](vscode-file://vscode-app/c:/Users/avina/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-browser/workbench/workbench.html) is more robust for edge cases (hidden files, paths with dots, etc.).\n\nThis has not surfaced in testing because all example workflows use simple single-dot filenames. However, it's a blocker for any real-world usage where versioned scripts or namespaced modules are common.","author":{"url":"https://github.com/avinxshKD","@type":"Person","name":"avinxshKD"},"datePublished":"2026-02-12T09:10:46.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/283/concore/issues/283"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d3867e4c-244d-63a3-ce3b-d871d7ba6b6d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | DEAA:CA364:2BA2DA:3C5A12:698DF7C7 |
| html-safe-nonce | c37960072f870b7f15aca46a8ca55c6dcd7d097215d4716e58903928defee069 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERUFBOkNBMzY0OjJCQTJEQTozQzVBMTI6Njk4REY3QzciLCJ2aXNpdG9yX2lkIjoiMTQxMzk0Njc1OTU3MTAyNTM1IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 9f015cd79da94515020c194390077bc7e5ea000ec0732c649713fba61e5682a6 |
| hovercard-subject-tag | issue:3930698758 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/ControlCore-Project/concore/283/issue_layout |
| twitter:image | https://opengraph.githubassets.com/644041a6d2242f0d14c441ff7dd59578b4964e46adb71788e61b27402b06d829/ControlCore-Project/concore/issues/283 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/644041a6d2242f0d14c441ff7dd59578b4964e46adb71788e61b27402b06d829/ControlCore-Project/concore/issues/283 |
| og:image:alt | The script uses naive .split(".") parsing throughout to extract filename and extension, which breaks on any source file containing multiple dots (e.g., data.processor.py, model.v2.cpp). Root cause:... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | avinxshKD |
| hostname | github.com |
| expected-hostname | github.com |
| None | ae22ef6ad27c5aeb770c5acd314c5724055bb23a663877aafdaaa50ed317ba34 |
| turbo-cache-control | no-preview |
| go-import | github.com/ControlCore-Project/concore git https://github.com/ControlCore-Project/concore.git |
| octolytics-dimension-user_id | 79023615 |
| octolytics-dimension-user_login | ControlCore-Project |
| octolytics-dimension-repository_id | 444936447 |
| octolytics-dimension-repository_nwo | ControlCore-Project/concore |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 444936447 |
| octolytics-dimension-repository_network_root_nwo | ControlCore-Project/concore |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | e545f5becd5b3ce9b429b68c3f994ad93c680ddb |
| ui-target | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width