Skip to content

Conversation

@jasonstratton
Copy link
Contributor

@jasonstratton jasonstratton commented Nov 13, 2025

Purpose

DYN-9386 - Remove nodes marked with [NodeObsolete] in Dynamo 1.3.4

Cherry-pick of two upstream PRs into RC4.0.0_master:

Release Notes

Removes 18 user-facing node functions that were marked with [NodeObsolete] in Dynamo 1.3.4:

CoreNodes (6 items):
ReadImage, LoadImageFromPath, ReadText, WriteImage, ExportToCSV, String.FromObject

Analysis (11 items):
PointData: ValueLocations, Values, ByPointsAndValues
SurfaceData: Surface, ValueLocations, Values, BySurfaceAndPoints, BySurfacePointsAndValues
VectorData: ValueLocations, Values, ByPointsAndValues

DSOffice (1 item):
Excel.Read(string, string)

@github-actions github-actions bot changed the title Cherry-pick #16676 and #16704 into RC4.0.0_master DYN-9386: Cherry-pick #16676 and #16704 into RC4.0.0_master Nov 13, 2025
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

See the ticket for this pull request: https://jira.autodesk.com/browse/DYN-9386

@jasonstratton jasonstratton changed the title DYN-9386: Cherry-pick #16676 and #16704 into RC4.0.0_master [CHERRY-PICK] DYN-9386 - Remove nodes marked with [NodeObsolete] in Dynamo 1.3.4 Nov 13, 2025
@zeusongit zeusongit added this to the 4.0 milestone Nov 13, 2025
@zeusongit
Copy link
Contributor

SelfServe Passed, merging.

@zeusongit zeusongit merged commit 1f98f53 into DynamoDS:RC4.0.0_master Nov 14, 2025
26 of 40 checks passed
/// <summary>
/// A class for storing structure point analysis data.
/// </summary>
[IsVisibleInDynamoLibrary(false)]
Copy link
Contributor

Choose a reason for hiding this comment

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

In the future, is it feasible to also mark with C# Obsolete attribute to get compiler warning for those who use/call from code and not only visually, from graphs?

Otherwise it's rather cumbersome to check custom attributes on everything in an entire code base.

Copy link
Contributor

Choose a reason for hiding this comment

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

Or perhaps to derive the NodeObsolete attribute from the C# Obsolete attribute to get compiler warnings?

Copy link
Contributor

@Mikhinja Mikhinja Nov 26, 2025

Choose a reason for hiding this comment

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

Or perhaps there is an already made analyzer that we should be using?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

NodeObsolete and Obsolete have 2 different use cases and we can try to apply Obsolete in addition to NodeObsolete, where it makes sense.

NodeObsolete is used to show warnings in the info bubble in Dynamo. So it is a runtime notification to graph authors.

Obsolete is the C# annotation that generates the compiler warnings. So it is a compile time warning for Dynamo developers.

I'm not sure how much overlap there is between these two scenarios, but when there is, we should be using both attributes.

Copy link
Contributor

Choose a reason for hiding this comment

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

Our use case was this: we were using internally in DynamoRevit some functions marked NodeObsolete for some years now, but we never knew because there were no compiler warnings, and other than compiler there is nothing for code usage, then close to code split they got removed from Dynamo Core.

I added you as a reviewer as well for a proposal long term solution DynamoRevit #3265

Copy link
Contributor

Choose a reason for hiding this comment

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

*proposal for long term solution for detecting these early - sorry for confusion, the actual solution for this particular situation is still WIP

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I will file a task to either mark all occurrences of NodeObsolete with NodeObsolete as well, or to have NodeObsolete inherit from Obsolete, which might be more failsafe, but I will need to discuss with the team as to the best approach.

Apologies for the misunderstanding.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants