Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve namespace listing using CPython3 engine #10950

Merged
merged 1 commit into from
Jul 29, 2020

Conversation

mmisol
Copy link
Collaborator

@mmisol mmisol commented Jul 29, 2020

Purpose

Namespace listing using dir would only provide non meaningful results
using the CPython3 engine. This is now fixed by preloading names by
default globally.

Declarations

Check these if you believe they are true

  • The codebase is in a better state after this PR
  • Is documented according to the standards
  • The level of testing this PR includes is appropriate
  • User facing strings, if any, are extracted into *.resx files
  • All tests pass using the self-service CI.
  • Snapshot of UI changes, if any.
  • Changes to the API follow Semantic Versioning and are documented in the API Changes document.
  • This PR modifies some build requirements and the readme is updated

Reviewers

@mjkkirschner

FYIs

@DynamoDS/dynamo

Namespace listing using dir would only provide non meaningful results
using the CPython3 engine. This is now fixed by preloading names by
default globally.
@mmisol mmisol requested a review from mjkkirschner July 29, 2020 16:45
{
var scope = Py.CreateScope(globalScopeName);
// Allows discoverability of modules by inspecting their attributes
scope.Exec(@"
Copy link
Member

Choose a reason for hiding this comment

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

I'm confused why this only needed to be run on this scope...
I guess it may be related to the sys.path issue @reddyashish is looking at and some confusion I have around the lifetime of ironPython engines vs PythonNet ones.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes. From what I could see, loaded modules stay alive beyond a single Python node evaluation. It's like they stay alive with the process. Doing it here makes more sense clr.setPreload(True), not only because it's easier, but also because once a module is loaded you can't reload it.

Copy link
Member

@mjkkirschner mjkkirschner left a comment

Choose a reason for hiding this comment

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

thanks for fixing this one!

@mmisol mmisol merged commit 2185e4c into DynamoDS:master Jul 29, 2020
radumg pushed a commit to SHKnudsen/Dynamo that referenced this pull request Jul 29, 2020
Namespace listing using dir would only provide non meaningful results
using the CPython3 engine. This is now fixed by preloading names by
default globally.
mmisol added a commit that referenced this pull request Aug 5, 2020
… scrollviewers (#10932)

* T1.1 Code Migration (#4)

* add ScriptMigrator

* Add visual difference viewer

* Update PythonMigrationViewExtension.cs

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update PythonMigrationViewExtension.csproj

* T1.2 accept/reject code changes (#5)

* add ScriptMigrator

* Add visual difference viewer

* Added methods for updating the ScriptEditors with the migrated code

* Update PythonMigrationViewExtension.cs

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update ScriptEditorWindow.xaml.cs

* Update PythonMigrationViewExtension.csproj

* Update PythonMigrationViewExtension.csproj

* comment updates

* Revert "comment updates"

This reverts commit 2d2332a.

* comment updates

* Update PythonMigrationAssistantViewModel.cs

* comment updates 2

* update engine version when migrating code

* extension and test updates

* T1.3 save python2 backup file on migration (#6)

* add ScriptMigrator

* Add visual difference viewer

* Added methods for updating the ScriptEditors with the migrated code

* Update PythonMigrationViewExtension.cs

* add mechanisme to save Python 2 backup

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update ScriptEditorWindow.xaml.cs

* Update PythonMigrationViewExtension.csproj

* Update PythonMigrationViewExtension.csproj

* comment updates

* Revert "comment updates"

This reverts commit 2d2332a.

* comment updates

* Update PythonMigrationAssistantViewModel.cs

* comment updates 2

* small clean ups

* Update PythonMigrationAssistantViewModel.cs

* add 2to3 icon

* comment updates

* GraphPythonDependencies changes

* make event internal

* fix build failure

* update license files, MigrationAssitantClicked event and PythonMigrationAssistantTests

* clean up

* clean up

* update licence files

* make MigrateCode internal

* comments update

* unsubscribe from ScriptEditorWindow closed

* Add 'Before' and 'After' properties (for some reason they where gone)

* Modify the VisualDifferenceViewer so text wraps instead of using scroll viewers

* remove diffplex.wpf reference

* refactor internal methods to bail early

* rename IronPython dependency method

* switch custom node python deps eval to short-circuit and add xml comment

* rename & move CPython deps method around

* prep support for handling dyn and dyf in migration backup

* handle dyf vs dyn difference in migration backup

events were not properly getting triggered when opening custom nodes either, fixed that too

* notify user that a backup file is created on Python migration

* fix tests

test project was unloaded

* move CustomNodeItem class as private to the warning dialog that needs it

* mark the PythonNode script setter for migration as Obsolet

this is so it raises warnings in the compiler and that anyone using this will know not to depend on a temporary feature

* change migration assistant viewmodel to depend on workspace and pathmanager not DynamoViewModel

* DYN-2990 address accessing null reference

fixes DYN-2990

* remove prism reference

* add note to obsolete MigrateCode method

* move migration assistant viewmodel to its namesake namespace

* make GraphPythonDependencies depend on interfaces instead of general ViewLoadedParams

* revert graph python dependency evaluation logic to not be short-circuited

this is because the dependency map dictionary is used in the UI warnings modal

* update comment

* fix botched namespace change

* parametrise the differ window initial width

* Modify the VisualDifferenceViewer so text wraps instead of using scroll viewers

* remove diffplex.wpf reference

* Python.NET binaries update (PR9) (#10945)

* Improve namespace listing using CPython3 engine (#10950)

Namespace listing using dir would only provide non meaningful results
using the CPython3 engine. This is now fixed by preloading names by
default globally.

* parametrise the differ window initial width

* resolve conflict between the 2 python migration viewmodels

* adjust initial window widths to keep text same wrapping

also allow for slightly larger vertical height for Before/After label as it was hard to spot

* update diff colours to Dynamo pallette

* update splitter colour in side diff layout to be black

* upgrade the inline display mode to also show fragments

* update sizing of diff viewer

* Update PythonMigrationViewExtensionTests.cs

Co-authored-by: Radu Gidei <[email protected]>
Co-authored-by: Martin Misol Monzo <[email protected]>
mmisol added a commit that referenced this pull request Aug 6, 2020
* T1.1 Code Migration (#4)

* add ScriptMigrator

* Add visual difference viewer

* Update PythonMigrationViewExtension.cs

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update PythonMigrationViewExtension.csproj

* T1.2 accept/reject code changes (#5)

* add ScriptMigrator

* Add visual difference viewer

* Added methods for updating the ScriptEditors with the migrated code

* Update PythonMigrationViewExtension.cs

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update ScriptEditorWindow.xaml.cs

* Update PythonMigrationViewExtension.csproj

* Update PythonMigrationViewExtension.csproj

* comment updates

* Revert "comment updates"

This reverts commit 2d2332a.

* comment updates

* Update PythonMigrationAssistantViewModel.cs

* comment updates 2

* update engine version when migrating code

* extension and test updates

* T1.3 save python2 backup file on migration (#6)

* add ScriptMigrator

* Add visual difference viewer

* Added methods for updating the ScriptEditors with the migrated code

* Update PythonMigrationViewExtension.cs

* add mechanisme to save Python 2 backup

* Add tooltip description to migration assistant

* updates

* comment updates

* comment updates

* Update ScriptEditorWindow.xaml.cs

* Update PythonMigrationViewExtension.csproj

* Update PythonMigrationViewExtension.csproj

* comment updates

* Revert "comment updates"

This reverts commit 2d2332a.

* comment updates

* Update PythonMigrationAssistantViewModel.cs

* comment updates 2

* small clean ups

* Update PythonMigrationAssistantViewModel.cs

* add 2to3 icon

* comment updates

* GraphPythonDependencies changes

* make event internal

* fix build failure

* update license files, MigrationAssitantClicked event and PythonMigrationAssistantTests

* clean up

* clean up

* update licence files

* make MigrateCode internal

* comments update

* unsubscribe from ScriptEditorWindow closed

* Add 'Before' and 'After' properties (for some reason they where gone)

* Modify the VisualDifferenceViewer so text wraps instead of using scroll viewers

* remove diffplex.wpf reference

* Migration assistant warning dialog

* refactor internal methods to bail early

* rename IronPython dependency method

* switch custom node python deps eval to short-circuit and add xml comment

* rename & move CPython deps method around

* prep support for handling dyn and dyf in migration backup

* handle dyf vs dyn difference in migration backup

events were not properly getting triggered when opening custom nodes either, fixed that too

* notify user that a backup file is created on Python migration

* fix tests

test project was unloaded

* move CustomNodeItem class as private to the warning dialog that needs it

* mark the PythonNode script setter for migration as Obsolet

this is so it raises warnings in the compiler and that anyone using this will know not to depend on a temporary feature

* change migration assistant viewmodel to depend on workspace and pathmanager not DynamoViewModel

* DYN-2990 address accessing null reference

fixes DYN-2990

* remove prism reference

* add note to obsolete MigrateCode method

* move migration assistant viewmodel to its namesake namespace

* make GraphPythonDependencies depend on interfaces instead of general ViewLoadedParams

* revert graph python dependency evaluation logic to not be short-circuited

this is because the dependency map dictionary is used in the UI warnings modal

* update comment

* fix botched namespace change

* parametrise the differ window initial width

* Modify the VisualDifferenceViewer so text wraps instead of using scroll viewers

* remove diffplex.wpf reference

* Python.NET binaries update (PR9) (#10945)

* Improve namespace listing using CPython3 engine (#10950)

Namespace listing using dir would only provide non meaningful results
using the CPython3 engine. This is now fixed by preloading names by
default globally.

* parametrise the differ window initial width

* resolve conflict between the 2 python migration viewmodels

* adjust initial window widths to keep text same wrapping

also allow for slightly larger vertical height for Before/After label as it was hard to spot

* update diff colours to Dynamo pallette

* update splitter colour in side diff layout to be black

* upgrade the inline display mode to also show fragments

* update sizing of diff viewer

* update warning dialog

* migration assistant warning save setting

* Update PythonMigrationAssistantViewModel.cs

* add dynamo version to file path

* comment updates

* only create warning dismiss file if accepted

* comments updates 2

* Update PythonMigrationViewExtension.csproj

* Update PythonMigrationAssistantViewModel.cs

* add is test mode to legal message

* comment updates

* comment updates 2

* update migration assistant disclaimer window title

Co-authored-by: Radu Gidei <[email protected]>
Co-authored-by: Martin Misol Monzo <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants