go to post Evgeny Shvarov · 18 min ago thank you @Ashok Kumar T @David Hockenbroch both! Included your code into the new embedded python template release - here.
go to post Evgeny Shvarov · 26 min ago Thank you, @Ashok Kumar T ! Works like a charm! This is in my case:
go to post Evgeny Shvarov · 29 min ago Very cool, @David Hockenbroch ! This is what I'm getting in my case:
go to post Evgeny Shvarov · 11 hr ago Found one option! ClassMethod DivideByZeroPython() [ Language = python ] { import sample import iris try: print("divide by zero=" + str(sample.dividezero(1))) except ZeroDivisionError as e: errobj=iris.cls("%Exception.General")._New(str(e),42) a=errobj.Log() print("Caught exception: " + str(e)) } This stores the error in Apps Log, but no stack (of course): Any ideas how I can store at least the class and line of code in parameters? I can provide the name and location to %Exception.General class that will be stored in the App Log.
go to post Evgeny Shvarov · Dec 23 Thanks, @John Murray ! Do you have any examples connecting both locally and remote?
go to post Evgeny Shvarov · Dec 23 I'd appreciate any example of a ready-made .code-workspace file, thank you in advance!
go to post Evgeny Shvarov · Dec 21 Interesting! Do you want to share an example of .code-workspace files and how to switch between servers?
go to post Evgeny Shvarov · Dec 20 Yes. It maybe a different thing: the format with <Export generator> is outdated and Studio together with LoadDir both support the outdated format and don't support the "new" one without the <Export> element, which is in Atelier API that VSCode is using (why do we still use this Atelier name? ) So, I'd better ask to support the new format, as the Export tag thing also has an annoying "feature" that it incudes date/time of export and this changes the file with every save/export even there were no changes.
go to post Evgeny Shvarov · Dec 20 Hi Team! Installed the extension in VSCode, installed classes via IPM zpm "install iris-oas-test-gen". Opened Swagger 2.0 spec file, clicked generate, and see the following: Looks like a connection error. I have VSCode connected to IRIS - it's in a docker contaner. Any hints how to make the extension see working IRIS?
go to post Evgeny Shvarov · Dec 20 The only "caveat" of the approach is that you should put all of the pivots and dashboards into one big class container. Even you have 100+ of them. It's like, "let's put all the classes into one big XML and store it in the repo in one file". It's OK for import/export, but not ideal for source control.
go to post Evgeny Shvarov · Dec 19 Sounds like that. Actually, I tried with another proejct and failed going with PKG approach, as DFI are being exported in a shorter form for me, .e.g.: <?xml version="1.0"?> <dashboard xmlns="http://www.intersystems.com/deepsee/library" name="AnnualPotatos" folderName="" title="Annual Potato Analytics" description="" keywords="" owner="" shared="true" public="true" locked="false" resource="" timeCreated="2025-08-26T23:29:13.2Z" createdBy="SuperUser" category="" bookCover="" scheme="" worklistCount="2" snapTo="true" snapGrid="true" gridRows="10" gridCols="10" canResize="true" canModify="true" showTitleBar="true" titleBarOpacity="" titleBarColor="" selectedTitleBarOpacity="" selectedTitleBarColor="" titleBarTextColor="" selectedTitleBarTextColor="" titleBarFont="" companyName="" companyLogo="" companyStyle="" backgroundColor="white" backgroundImage="none" backgroundRepeat="no-repeat" backgroundSize="100% 100%" backgroundOpacity="1" widgetBorders="1px solid #F0F0F0" widgetBordersSwitch="edit" widgetBordersColor="#F0F0F0" widgetBordersStyle="solid" widgetBordersWidth="1" widgetBordersToggle="true"> <widget name="Widget2" type="pivot" subtype="comboChart" subtypeClass="comboChart" title="Potato Sales and Import, Tonnes" dataSource="Potatos/Yearly.pivot" dataLink="" drillDownDataSource="" width="200" height="200" sidebarContent="" showSidebar="false" sidebarWidth="" maximized="false" homeRowL="0" homeColL="0" colSpanL="7" rowSpanL="7" showToolbar="true" showToolbarBottomBorder="true" showToolbarOnlyWhenMaximized="false" colorToolbar="#F0F0F0" opacityToolbar="1" backgroundColor="#F0F0F0" opacity="1" theme="" dataColorList=""> <control name="" action="applyFilter" target="" targetProperty="[Country].[H1].[Country]" location="widget" type="auto" controlClass="" label="Country" title="" value="" text="" readOnly="false" valueList="" displayList="" activeWhen=""> <valueRequired>false</valueRequired> </control> <override name="comboChart">{legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],seriesTypes:',bar',_type:'comboChart'}</override> </widget> </dashboard> In your case there is also an export tag: <?xml version="1.0"?> <Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2024.3 (Build 217U)" ts="2025-09-21 16:49:04"> <dashboard xmlns="http://www.intersystems.com/deepsee/library" name="AnnualPotatos" folderName="Potatos" title="Annual Potato Analytics" description="" keywords="" owner="" shared="true" public="true" locked="false" resource="" timeCreated="2025-08-26T23:29:13.2Z" createdBy="SuperUser" category="" bookCover="" scheme="" worklistCount="2" snapTo="true" snapGrid="true" gridRows="10" gridCols="10" canResize="true" canModify="true" showTitleBar="true" titleBarOpacity="" titleBarColor="" selectedTitleBarOpacity="" selectedTitleBarColor="" titleBarTextColor="" selectedTitleBarTextColor="" titleBarFont="" companyName="" companyLogo="" companyStyle="" backgroundColor="white" backgroundImage="none" backgroundRepeat="no-repeat" backgroundSize="100% 100%" backgroundOpacity="1" widgetBorders="1px solid #F0F0F0" widgetBordersSwitch="edit" widgetBordersColor="#F0F0F0" widgetBordersStyle="solid" widgetBordersWidth="1" widgetBordersToggle="true"> <widget name="Widget2" type="pivot" subtype="comboChart" subtypeClass="comboChart" title="Potato Sales and Import, Tonnes" dataSource="Potatos/Yearly.pivot" dataLink="" drillDownDataSource="" width="200" height="200" sidebarContent="" showSidebar="false" sidebarWidth="" maximized="false" homeRowL="0" homeColL="0" colSpanL="7" rowSpanL="7" showToolbar="true" showToolbarBottomBorder="true" showToolbarOnlyWhenMaximized="false" colorToolbar="#F0F0F0" opacityToolbar="1" backgroundColor="#F0F0F0" opacity="1" theme="" dataColorList=""> <control name="" action="applyFilter" target="" targetProperty="[Country].[H1].[Country]" location="widget" type="auto" controlClass="" label="Country" title="" value="" text="" readOnly="false" valueList="" displayList="" activeWhen=""> <valueRequired>false</valueRequired> </control> <override name="comboChart">{legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],seriesTypes:',bar',_type:'comboChart'}</override> </widget> </dashboard></Export> And zpm load imports the latter one, but not the first type. Also, if I save it in VSCode, it removes <export> tag as a result of compiling. But the same doesn't let it be imported via PKG approach.
go to post Evgeny Shvarov · Dec 19 I think what've found is a "hack", or side-effect. Because of ZX.PKG resource line IPM imports "everything" from /src/ZX folder, inlcuding dfi files which happen to be there. But it's OK. I wonder, if there will be no classes in ZX, or if you include another folder ZY which include only DFI documents inside, will IPM import those as well?
go to post Evgeny Shvarov · Dec 19 Next is editing and control versioning in VS-Code. DFI changes in VS-Code are not propagating to connected IRIS automatically after saving. @Brett Saviano - any hints how can this be set up? In order to make changes in the Dashboard portal to be automatically reflected, one can use git-source-control. After the following lines: USER> zpm "install git-source-control" USER> do ##class(%Studio.SourceControl.Interface).SourceControlClassSet("SourceControl.Git.Extension") changes made in Dashboard Portal editor are being exported into VSCode (into a file), but the location is wrong - git-source-control has created cls/ZXFree folder and dashboard.dfi But I expected src/ZXfree.dashboard.DFI, as there is no Folder in a dashboard, just title="ZXFree" @Pravin Barton , @Timothy Leavitt - could you please take a look?
go to post Evgeny Shvarov · Dec 19 It indeed works! After providing proper (for Mac) Dockerfile and Docker-compose.yml, and adding DSW, here is what I'm getting:
go to post Evgeny Shvarov · Dec 19 Like the minimalistic setup, but this doesn't work on mac: 12/19/25-12:27:01:978 (467) 0 [Utility.Event] Initializing Interoperability during system startup iris-1 | [INFO] ...started InterSystems IRIS instance IRIS iris-1 | [INFO] Executing command /docker-entrypoint.sh iris-after-start '/ext/ascript.sh'... iris-1 | [ERROR] /docker-entrypoint.sh: line 196: /ext/ascript.sh: Permission denied iris-1 | [ERROR] Command "/docker-entrypoint.sh iris-after-start '/ext/ascript.sh'" exited with status 32256 iris-1 | [FATAL] Error executing post-startup command iris-1 | [INFO] Shutting down InterSystems IRIS instance IRIS...
go to post Evgeny Shvarov · Dec 17 I'd say xml as it's been working well with IPM packaging and standard import/export. But if dfi is working for you it'd be great to hear! I kind of like .dfi more as it's more clear what the file is about. But xml is fine too.
go to post Evgeny Shvarov · Dec 17 Hi @Brett Saviano ! I double checked the export format - the format is the same now and is supported both in IPM and VSCode ObjectScript. The only issue left is file naming: Atelier REST API exports DFI file names with dFI extension as: Potatos-AnnualPotatos.dashboard.DFI at the same time IPM can consume DFI resources if they are presented as XML (tested in 0.10.4), e.g.: Potatos/AnnualPotatos.dashboard.xml Inviting @Pravin Barton also, maybe there are plans to do something with this in the future. And it exports files with "-" as a folder delimeter. Imagine if you have 100+pivots and dashboards in folders - in the code repository, they all will be in one folder with 100+ files with "-" as delimiters. Doesn't sound like a convenient approach. It's like ObjectScript code files will be named as: /src/package-subpackage-class.cls and all reside in one folder, instead of being distributed in packages as folders, as it is working now: src/package/subpackage/class.cls @Brett Saviano - hope we could fix this too in the future.