pyRevit 6.1.0 🚀

pyRevit 6.1.0

The best of the better (kiddin’, it is good, but I am out of superlatives), with most of the bug fixes raised after the 6.0.0 release

Big changes, more bugs… It was expected, but the reactivity of the community wasn’t.
Thanks again: @pyrevti @tayOthman @OriAshkenazi @romangolev @sanzoghenzo

Highlights

  • Extensions window: Custom extension install from UI (token auth, optional path), Deselect button, dynamic action buttons.
  • pyrevit.forms: Backend split (IronPython/CPython), CPython stubs, WPF/resource and date-handling fixes.
  • Loader: Inline engine override, before/after directives, multiline titles, parsing errors logged, unicode-safe paths.
  • Section Box / Navigator: Temporary section box, temp switch, tooltips; new external event helper and Modeless example.

Changes by folder / tool

extensions/pyRevitCore.extension — Extensions

  • Custom extension install from UI (token, repo URL, path); remove username/password; support any host (e.g. GitLab).
  • Deselect button and action buttons that update with selection; full localization for custom-install section.
  • Install path selection; remove private-repo UI; wider window; config save and lazy updates; small script/docstring cleanups.

extensions/pyRevitTools.extension — Section Box, ColorSplasher, ReNumber, Isolate, Pick, ViewRange, Measure

  • Section Box Navigator: temp switch, tooltips, external event helper; SectionBox: temporary option, config fix, elements_bounding_box moved to lib.
  • ColorSplasher: list-box error handling and cleanup; ReNumber, Isolate, Pick: add title for WPF; ViewRange, Measure: external helper and small fixes.
  • XLS Export / Create Workset For Linked Element: script renames to avoid import namespace collision.

extensions/pyRevitDevTools.extension

  • Bundle Tests: remove unused Dynamo scripts; Engine Tests: CPython/forms fixes; Developer Examples: generic external event handler and Modeless example; Test ComboBox: dynamic/rich ComboBox fix.

extensions/extensions.json

  • Extension rename and repository URL updates.

pyrevitlib/pyrevit/forms

  • Backend split (IronPython/CPython), CPython stubs, WPF resource merge fix; ask_for_date and non-US date fixes; ComboBox aliases and metadata fallback.

pyrevitlib/pyrevit/extensions (extpackages, extensionmgr)

  • Config/path handling, install-path lookup, remove-flow and error-logging fixes; repo name from Git URL.

pyrevitlib/pyrevit/revit

  • Updated pick_point(); new external event helper in events.py.

dev/pyRevitLoader

  • Inline engine override; YamlDotNet parser aligned with legacy; parsing error logging; multiline title and unicode-safe user paths; before/after directives; panel background fix; ComboBox and name_config.py support; locale/config and invoke/URL button fixes.

dev/pyRevitLabs (TargetApps.Revit, Runtime)

  • Cache Revit product scan; registry/install-path handling; invoke and URL buttons fixed in Runtime.

dev/pyRevitTelemetryServer

  • Go MongoDB driver bumped to v2.

docs / CLAUDE.md

  • Forms backend and CPython contract documented; CLAUDE.md added (branch layout, docs URL, Revit/.NET versions).
4 Likes

I felt it is coming; there were unusual activity around the PRs. Thank you @Jean-Marc for leading the team to navigate through this.

1 Like

Great work!

I’ve noticed one thing, don’t know if this is a bug or a feature for faster file loading:

As I’ve tendency to close my functions and classes (like wpf windows) in external modules I’ve noticed that with version 6 I need to reload whole pyRevit in order to changes in my modules to take effects. Usually my modules are within the same folder as script.py

Thank you for the fantastic development.

I am not sure if I had a problem with the installation (I am using REVIT 2026).

I uninstall my previour pyrevit version and delete the folders under %%APPDATA%%Roaming and it seems I do not have a folder under ProgramData

As in the past, I need to attach the new version to revit:

pyrevit attach master default --installed

to make it works. It returns now:

==> Attachments
master | Product: “2026 First Customer Ship” | Engine: DEFAULT (2712) | Path: “C:\Users\Antrox\AppData\Roaming\pyRevit-Master”

Compare to my previous version, a new extension called pyRevit Bundles Creator appears and it works fine.

Then, I add my sample extension. Everything looks ok but when I type in a script:

#! python3

# -*- coding: utf-8 -*-

from pyrevit import revit

I got the error:

CPython Traceback:
interface takes exactly one argument

pyRevitLabs.PythonNet
File “C:\Users\AntroxAppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\revit\events.py”, line 160, in
_HANDLER = GenericExternalEventHandler()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\AntroxAppData
\Roaming\pyRevit-Master\pyrevitlib\pyrevit\revit_init.py", line 26, in
from pyrevit.revit import events
File “”, line 5, in
at Python.Runtime.PythonException.ThrowLastAsClrException()
at Python.Runtime.PythonException.ThrowIfIsNull(NewReference& ob)
at Python.Runtime.PyModule.Exec(String code, BorrowedReference _globals, BorrowedReference _locals)
at Python.Runtime.PyModule.Exec(String code, PyDict locals)
at PyRevitLabs.PyRevit.Runtime.CPythonEngine.Execute(ScriptRuntime& runtime)

whilst,

# -*- coding: utf-8 -*-

from pyrevit import revit

works just fine

Did I have a problem with the installation or I am using incorrectly CPython?

Many thanks

Please guys,
If this is an issue you are pointing…

  1. Search for issues, similar ones, on GitHub
  2. If found, add your details if relevant, if not, follow
  3. If not found, fill an issue report