Skip to content

PyRevitRunner: honor cpython hashbang#3029

Merged
jmcouffin merged 18 commits intopyrevitlabs:developfrom
OriAshkenazi:fix/pyrevit-runner-cpython
Jan 23, 2026
Merged

PyRevitRunner: honor cpython hashbang#3029
jmcouffin merged 18 commits intopyrevitlabs:developfrom
OriAshkenazi:fix/pyrevit-runner-cpython

Conversation

@OriAshkenazi
Copy link
Copy Markdown
Contributor

PR: pyRevitRunner CPython hashbang

Summary

  • Route pyrevit run execution through runtime ScriptExecutor so engine selection matches the UI precedence (explicit config > hashbang > IronPython), and CPython-missing errors surface clearly.
  • Preserve runner-specific behavior by injecting __batchexec__, __logfile__, and __models__ into builtins and by capturing log output via runtime ScriptIO (with optional output suppression).
  • Emit runner EngineConfigs in the journal (default full_frame) and normalize runtime config inputs (env dict seeding, log path, search paths/args defaults).
  • Validation: ran local runner smoke scripts (one #! python3, one IronPython) that print builtins and write to the runner log; confirmed engine selection and log capture.

Testing

  • pyrevit run with a local CPython hashbang smoke script (prints builtins, writes to log) - pass
  • pyrevit run with a local IronPython smoke script (prints builtins, writes to log) - pass (stderr not captured in IPY)
  • dotnet test dev/pyRevitLabs/pyRevitLabs.UnitTests/pyRevitLabs.UnitTests.csproj -c Debug - pass
  • dotnet test dev/pyRevitLoader/pyRevitExtensionParserTester/pyRevitExtensionParserTest.csproj -c Debug --logger "trx;LogFileName=pyrevitextensionparser-tests.trx" - fail (pre-existing on develop): TestPanelButtonWithMultilingualBundle (dev/pyRevitLoader/pyRevitExtensionParserTester/PanelButtonBundleTests.cs:292)
  • python -m unittest discover -s pyrevitlib/pyrevit/unittests - 0 tests
  • py -3.12 -m pytest dev/modules/pyRevitLabs.Python.Net/tests - fail (pythonnet loader init)

Notes / follow-ups

  • Revit model version detection: pyrevit run --models --revit=2025 can throw when the build string is missing from the cached host map (pyrevit-hosts.json), even though BasicFileInfo reports Format 2025. Consider falling back to Format/product-version or refreshing the host map before failing when --revit is explicit.
  • Extension parser test (pre-existing on develop): TestPanelButtonWithMultilingualBundle fails in dev/pyRevitLoader/pyRevitExtensionParserTester/PanelButtonBundleTests.cs because DebugDialogConfig reports HasLocalizedContent == false and missing localized titles/tooltips for en_us/fr/de. Needs separate investigation.

- route runner execution through runtime ScriptExecutor
- preserve runner builtins and log capture via runtime ScriptIO
- emit EngineConfigs in the journal and normalize runtime defaults
@devloai
Copy link
Copy Markdown
Contributor

devloai bot commented Jan 22, 2026

Unable to trigger custom agent "Code Reviewer"You have run out of credits 😔
Please upgrade your plan or buy additional credits from the subscription page.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances the pyRevit runner to honor CPython hashbang directives by routing script execution through the runtime ScriptExecutor. This enables consistent engine selection logic (explicit config > hashbang > IronPython default) for both UI and runner contexts.

Changes:

  • Refactored PyRevitRunnerCommand to use the runtime ScriptExecutor instead of the legacy IronPython-only executor
  • Added support for custom variables injection into Python builtins (batchexec, logfile, models)
  • Implemented log file capture via ScriptIO with optional output suppression for runner context

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
dev/pyRevitLoader/Source/PyRevitRunnerCommand.cs Refactored to use runtime ScriptExecutor with engine config support; added helper methods for journal data parsing, script metadata building, and environment seeding
dev/pyRevitLoader/Directory.Build.targets Added assembly references for pyRevitLabs.Json, pyRevitLabs.PyRevit, and pyRevitLabs.PyRevit.Runtime when UseRunner is enabled
dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitRunner.cs Updated journal template to include EngineConfigs parameter (5 parameters instead of 4) with default full_frame configuration
dev/pyRevitLabs.PyRevit.Runtime/scriptruntime.cs Added Variables, LogFilePath, and SuppressOutput properties to ScriptRuntimeConfigs for runner-specific behavior
dev/pyRevitLabs.PyRevit.Runtime/ScriptIO.cs Implemented log file capture by appending output to LogFilePath; added output suppression check via SuppressOutput flag
dev/pyRevitLabs.PyRevit.Runtime/IronPythonEngine.cs Added logic to inject custom variables from ScriptRuntimeConfigs.Variables into Python builtins
dev/pyRevitLabs.PyRevit.Runtime/CPythonEngine.cs Added logic to inject custom variables from ScriptRuntimeConfigs.Variables into Python builtins

- lock log file writes and emit debug traces on log failures
- guard runner search path nulls and remove redundant null-coalesce
- add debug traces for best-effort JSON/log file operations
@OriAshkenazi
Copy link
Copy Markdown
Contributor Author

Re-ran runner smoke tests after the review fixes:

  • Using absolute script paths, runner logs now capture stdout/stderr and builtins, and implementation reports cpython for the #! python3 script and ironpython for the IPY script.
  • The earlier empty logs were due to relative script paths in the journal; Revit's working directory isn't the repo root, so File.Exists fails and the script never executes.

@jmcouffin
Copy link
Copy Markdown
Contributor

  • Extension parser test (pre-existing on develop): TestPanelButtonWithMultilingualBundle fails in dev/pyRevitLoader/pyRevitExtensionParserTester/PanelButtonBundleTests.cs because DebugDialogConfig reports HasLocalizedContent == false and missing localized titles/tooltips for en_us/fr/de. Needs separate investigation.

@romangolev this is your playground ☝️ 🙏

@jmcouffin jmcouffin self-assigned this Jan 22, 2026
@jmcouffin jmcouffin added the Runtime Issues related to loading pyRevit runtime [subsystem] label Jan 22, 2026
pipenv run pyrevit build labs
pipenv run pyrevit build products Debug
copy .\release\.pyrevitargs .

---

refactor: update ScriptRuntimeConfigs properties for better encapsulation

- Changed LogFilePath and SuppressOutput from fields to properties in ScriptRuntimeConfigs for improved encapsulation.
- Updated PyRevitRunnerCommand to set these properties dynamically, enhancing flexibility and maintainability.
@jmcouffin jmcouffin marked this pull request as draft January 22, 2026 22:11
@jmcouffin
Copy link
Copy Markdown
Contributor

jmcouffin commented Jan 22, 2026

@OriAshkenazi

  1. You will need to make sure it compiles:
pipenv run pyrevit build labs
pipenv run pyrevit build products Debug
copy .\release\.pyrevitargs .

Have a look at https://docs.pyrevitlabs.io/dev-guide/
and see the mods I had to do to make it compile cc91205

broken tesing approach

2. Please details your steps running the test, because in my testing the first test fails, see below

Test 1

Made it work.
Fix my pyrevit-hosts file
C:>"C:\Users\Local Admin\Documents\GitHub\pyRevit\bin\pyrevit.exe" run test_cpython.py --revit=2026
==> Execution Environment
Execution Id: "bab2210f-8193-40f7-8ffc-f6ee4a733f5f"
Product: 2026 First Customer Ship | Version: 26.0.4.409 | Build: 20250227_1515(x64) | Language: 1033 | Path: "C:\Program Files\Autodesk\Revit 2026"
Clone: dev | Deploy: "basepublic" | Branch: "pr/3029" | Version: "5.3.1.25308+1755" | Path: "C:\Users\Local Admin\Documents\GitHub\pyRevit"
Engine: DEFAULT (netcore) | Kernel: IronPython 2 | Version: 2712 | Runtime: True | Path: "C:\Users\Local Admin\Documents\GitHub\pyRevit\bin\netcore\engines\IPY2712PR\pyRevitLoader.dll" | Desc: "Custom pyRevit IronPython 2 Engine"
Script: "test_cpython.py"
Working Directory: "C:\Users\LOCALA1\AppData\Local\Temp\bab2210f-8193-40f7-8ffc-f6ee4a733f5f"
Journal File: "C:\Users\LOCALA
1\AppData\Local\Temp\bab2210f-8193-40f7-8ffc-f6ee4a733f5f\PyRevitRunner_bab2210f-8193-40f7-8ffc-f6ee4a733f5f.txt"
Manifest File: "C:\Users\LOCALA1\AppData\Local\Temp\bab2210f-8193-40f7-8ffc-f6ee4a733f5f\PyRevitRunner.addin"
Log File: "C:\Users\LOCALA
1\AppData\Local\Temp\bab2210f-8193-40f7-8ffc-f6ee4a733f5f\PyRevitRunner_bab2210f-8193-40f7-8ffc-f6ee4a733f5f.log"
==> Execution Log

Nothing in the log?

  • pyrevit unsigned window was blocking
Details

' pyrevitrunner generated journal
' 0:< 'C 2026-01-22T22:37:01Z;
Dim Jrn
Set Jrn = CrsJournalScript
Jrn.Directive "DebugMode", "PerformAutomaticActionInErrorDialog", 1
Jrn.Directive "DebugMode", "PermissiveJournal", 1
Jrn.RibbonEvent "TabActivated:Add-Ins"
Jrn.RibbonEvent "Execute external command:CustomCtrl_%CustomCtrl_%Add-Ins%pyRevitRunner%PyRevitRunnerCommand:PyRevitRunner.PyRevitRunnerCommand"
Jrn.Data "APIStringStringMapJournalData" _
, 5 _
, "ScriptSource" , "test_cpython.py" _
, "SearchPaths" , "" _
, "Models" , "" _
, "EngineConfigs" , "{""full_frame"": true}" _
, "LogFile" , "C:\Users\LOCALA~1\AppData\Local\Temp\fe30ecda-da3f-48a4-bd51-309fe0cbd0f8\PyRevitRunner_fe30ecda-da3f-48a4-bd51-309fe0cbd0f8.log"
Jrn.Command "SystemMenu" , "Quit the application; prompts to save projects , ID_APP_EXIT"
Jrn.Data "TaskDialogResult" , "Do you want to save changes to Untitled?", "No", "IDNO"

No print statement in the log 🔴

python ran:

#! python3

# Test builtins are injected correctly
print(f"__batchexec__: {__batchexec__}")
print(f"__logfile__: {__logfile__}")
print(f"__models__: {__models__}")

# Test log capture
print("This should appear in the log file")

@jmcouffin
Copy link
Copy Markdown
Contributor

jmcouffin commented Jan 23, 2026

... Continuation from yesterday session of testing.

Note to future self:

first test 🟢

& "C:\Users\Local Admin\Documents\GitHub\pyRevit\bin\pyrevit.exe" run "C:\Users\Local Admin\Documents\GitHub\pyRevit\extensions\pyRevitDevTools.extension\pyRevitDev.tab\Debug.panel\Engine Tests.pulldown\Test CPython Command.pushbutton\script.py" --revit=2026 --debug
  • brought the first test code temporarily in Test CPython Command.pushbutton\script.py

second test 🟢

& "C:\Users\Local Admin\Documents\GitHub\pyRevit\bin\pyrevit.exe" run "C:\Users\Local Admin\Documents\GitHub\pyRevit\extensions\pyRevitDevTools.extension\pyRevitDev.tab\Debug.panel\Engine Tests.pulldown\Test IronPython Search Paths.pushbutton\script.py" --revit=2026

third test 🟢

dotnet test dev/pyRevitLabs/pyRevitLabs.UnitTests/pyRevitLabs.UnitTests.csproj -c Debug


skipping four and five


test six

irrelevant for this PR

Details

py -3.10 -m pytest dev/modules/pyRevitLabs.Python.Net/tests -v
Identification des projets à restaurer...
Restauration effectuée de C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\Python.Runtime.csproj (en 280 ms).
Restauration effectuée de C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\tests\domain_tests\Python.DomainReloadTests.csproj (en 2.58 sec).
C:\Program Files\dotnet\sdk\10.0.100-rc.2.25502.107\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(351,5): message NETSDK1057: vous utilisez une version d'aperçu de .NET. Voir : https://aka.ms/dotnet-support-policy [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\tests\domain_tests\Python.DomainReloadTests.csproj::TargetFramework=net472]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.NullReferenceException' avec le message 'Object reference not set to an instance of an object.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\Python.Runtime.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.NullReferenceException' avec le message 'Object reference not set to an instance of an object.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\Python.Runtime.csproj::TargetFramework=netstandard2.0]
Python.Runtime -> C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\tests\domain_tests\bin\pyRevitLabs.PythonNet.dll
Python.DomainReloadTests -> C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\tests\domain_tests\bin\Python.DomainReloadTests.exe

La génération a réussi.

CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.NullReferenceException' avec le message 'Object reference not set to an instance of an object.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\Python.Runtime.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.NullReferenceException' avec le message 'Object reference not set to an instance of an object.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\Python.Runtime.csproj::TargetFramework=netstandard2.0]
2 Avertissement(s)
0 Erreur(s)

Temps écoulé 00:00:06.52
Identification des projets à restaurer...
Restauration effectuée de C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj (en 308 ms).
Sur l'ensemble des projets, 1 sur 2 sont à jour pour la restauration.
C:\Program Files\dotnet\sdk\10.0.100-rc.2.25502.107\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(351,5): message NETSDK1057: vous utilisez une version d'aperçu de .NET. Voir : https://aka.ms/dotnet-support-policy [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
Python.Runtime -> C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\runtime\bin\Debug\netstandard2.0\pyRevitLabs.PythonNet.dll
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.InvalidCastException' avec le message 'Unable to cast object of type 'Microsoft.CodeAnalysis.Operations.ArrayInitializerOperation' to type 'Microsoft.CodeAnalysis.Operations.IArrayCreationOperation'.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.InvalidCastException' avec le message 'Unable to cast object of type 'Microsoft.CodeAnalysis.Operations.ArrayInitializerOperation' to type 'Microsoft.CodeAnalysis.Operations.IArrayCreationOperation'.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.InvalidCastException' avec le message 'Unable to cast object of type 'Microsoft.CodeAnalysis.Operations.ArrayInitializerOperation' to type 'Microsoft.CodeAnalysis.Operations.IArrayCreationOperation'.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.InvalidCastException' avec le message 'Unable to cast object of type 'Microsoft.CodeAnalysis.Operations.ArrayInitializerOperation' to type 'Microsoft.CodeAnalysis.Operations.IArrayCreationOperation'.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
CSC : warning AD0001: L'analyseur 'NonCopyable.NonCopyableAnalyzer' a levé une exception de type 'System.InvalidCastException' avec le message 'Unable to cast object of type 'Microsoft.CodeAnalysis.Operations.ArrayInitializerOperation' to type 'Microsoft.CodeAnalysis.Operations.IArrayCreationOperation'.'. [C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\Python.Test.csproj::TargetFramework=netstandard2.0]
Python.Test -> C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\src\testing\bin\Debug\netstandard2.0\Python.Test.dll
Python.Test -> C:\Users\Local Admin\AppData\Local\Temp\tmpykdsgach
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages_pytest\main.py", line 314, in wrap_session
INTERNALERROR> config.do_configure()
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages_pytest\config_init
.py", line 1159, in _do_configure
INTERNALERROR> self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\pluggy_hooks.py", line 534, in call_historic
INTERNALERROR> res = self._hookexec(self.name, self._hookimpls.copy(), kwargs, False)
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\pluggy_manager.py", line 120, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\pluggy_callers.py", line 167, in _multicall
INTERNALERROR> raise exception
INTERNALERROR> File "C:\Users\Local Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\pluggy_callers.py", line 121, in multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\tests\conftest.py", line 87, in pytest_configure
INTERNALERROR> import clr
INTERNALERROR> File "C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\clr.py", line 5, in
INTERNALERROR> from pythonnet import load
INTERNALERROR> File "C:\Users\Local Admin\Documents\GitHub\pyRevit\dev\modules\pyRevitLabs.Python.Net\pythonnet_init
.py", line 6, in
INTERNALERROR> import clr_loader
INTERNALERROR> ModuleNotFoundError: No module named 'clr_loader'

@jmcouffin jmcouffin marked this pull request as ready for review January 23, 2026 21:07
@jmcouffin jmcouffin requested a review from Copilot January 23, 2026 21:07
jmcouffin
jmcouffin previously approved these changes Jan 23, 2026
- Introduced a new build entry for Autodesk Revit 2026.4 with version 26.4.0.32.
- Included metadata and release notes links for better reference and documentation.
jmcouffin and others added 6 commits January 23, 2026 22:10
- Removed comments regarding the availability of LogFilePath, SuppressOutput, and Variables properties in the referenced DLL version to improve code clarity and maintainability.
- Updated comments to provide clearer context regarding model file handling and Revit version determination.
- Improved readability by specifying conditions under which model files are verified and versions are used.
- route runner execution through runtime ScriptExecutor
- preserve runner builtins and log capture via runtime ScriptIO
- emit EngineConfigs in the journal and normalize runtime defaults
- lock log file writes and emit debug traces on log failures
- guard runner search path nulls and remove redundant null-coalesce
- add debug traces for best-effort JSON/log file operations
pipenv run pyrevit build labs
pipenv run pyrevit build products Debug
copy .\release\.pyrevitargs .

---

refactor: update ScriptRuntimeConfigs properties for better encapsulation

- Changed LogFilePath and SuppressOutput from fields to properties in ScriptRuntimeConfigs for improved encapsulation.
- Updated PyRevitRunnerCommand to set these properties dynamically, enhancing flexibility and maintainability.
- Introduced a new build entry for Autodesk Revit 2026.4 with version 26.4.0.32.
- Included metadata and release notes links for better reference and documentation.
@jmcouffin
Copy link
Copy Markdown
Contributor

would you be able to tag a few folks to join the effort?

@OriAshkenazi sure, and that would be great.

Please open a specific Issue describing the plan and pain point with sub-issues and ping these people, they may be willing or capable to chip in:
@Wurschdhaud @acco-jpitts @davidvadkerti @jaredholloway94 @pyrevitlabs/pyrevit-dev @Thomas84 @thumDer @WemyssJ

Phase 1 (small, safe):

sounds good, go for it

Thank you!

@sanzoghenzo
Copy link
Copy Markdown
Contributor

sanzoghenzo commented Jan 25, 2026

I've tried it once, but never managed to follow up with it:

https://discourse.pyrevitlabs.io/t/pyrevit-cpython-wpf-support-saga/8394

Ehsan told us about pythonnet patches made internally by mcneel, same thing by dynamo guys, I don't know if any of it reach upstream...
I would wait/nudge them before trying to reinvent the wheel 😉

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26025+1329-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26025+1418-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2037-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2039-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2101-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2136-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2147-wip

@github-actions
Copy link
Copy Markdown
Contributor

📦 New work-in-progress (wip) builds are available for 5.3.1.26030+2212-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1043-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1111-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1304-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1323-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1433-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1538-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1543-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1553-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1612-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1624-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1738-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1743-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1829-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 5.3.1.26032+1937-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 6.0.0.26032+1956-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 6.0.0.26032+2005-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New work-in-progress (wip) builds are available for 6.0.0.26032+2008-wip

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New public release are available for 6.0.0.26032+2040

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 1, 2026

📦 New public release are available for 6.0.0.26032+2040

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Runtime Issues related to loading pyRevit runtime [subsystem]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants