moderne-visualizations-misc 0.68.0__tar.gz → 0.69.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/PKG-INFO +1 -1
  2. moderne_visualizations_misc-0.69.0/moderne_visualizations_misc/composite_recipe_results_sankey.ipynb +179 -0
  3. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/embeddings_clustering.ipynb +1 -1
  4. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/get_embeddings_and_cluster.ipynb +24 -13
  5. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/java_versions_by_sourceset.ipynb +15 -15
  6. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/java_versions_in_use.ipynb +14 -18
  7. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc.egg-info/PKG-INFO +1 -1
  8. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/pyproject.toml +1 -1
  9. moderne_visualizations_misc-0.68.0/moderne_visualizations_misc/composite_recipe_results_sankey.ipynb +0 -167
  10. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/MANIFEST.in +0 -0
  11. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/README.md +0 -0
  12. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/__init__.py +0 -0
  13. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/call_graph_data_grid.ipynb +0 -0
  14. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/call_graph_uml.ipynb +0 -0
  15. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/cobol_find_copybook.ipynb +0 -0
  16. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/cobol_relationships.ipynb +0 -0
  17. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/cobol_relationships_data_grid.ipynb +0 -0
  18. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/comment_language_distribution.ipynb +0 -0
  19. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view.ipynb +0 -0
  20. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs.ipynb +0 -0
  21. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_build_tools.ipynb +0 -0
  22. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_db.ipynb +0 -0
  23. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_forms.ipynb +0 -0
  24. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_lint.ipynb +0 -0
  25. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_rtc.ipynb +0 -0
  26. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_security.ipynb +0 -0
  27. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_ss.ipynb +0 -0
  28. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_state.ipynb +0 -0
  29. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_testing.ipynb +0 -0
  30. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_ui.ipynb +0 -0
  31. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_tree_view_nodejs_utility.ipynb +0 -0
  32. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin.ipynb +0 -0
  33. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_gradle.ipynb +0 -0
  34. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_jackson.ipynb +0 -0
  35. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_maven.ipynb +0 -0
  36. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs.ipynb +0 -0
  37. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_build_tools.ipynb +0 -0
  38. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_db.ipynb +0 -0
  39. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_forms.ipynb +0 -0
  40. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_lint.ipynb +0 -0
  41. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_rtc.ipynb +0 -0
  42. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_security.ipynb +0 -0
  43. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_ss.ipynb +0 -0
  44. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_state.ipynb +0 -0
  45. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_testing.ipynb +0 -0
  46. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_ui.ipynb +0 -0
  47. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nodejs_utility.ipynb +0 -0
  48. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_usage_violin_nuget.ipynb +0 -0
  49. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_vulnerabilities.ipynb +0 -0
  50. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_vulnerabilities_npm.ipynb +0 -0
  51. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/dependency_vulnerabilities_nuget.ipynb +0 -0
  52. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/effective_maven_settings.ipynb +0 -0
  53. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/eslint_problems.ipynb +0 -0
  54. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/eslint_problems_by_repo.ipynb +0 -0
  55. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/find_methods.ipynb +0 -0
  56. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/find_methods_ai.ipynb +0 -0
  57. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/find_methods_ai_generate_yaml.ipynb +0 -0
  58. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/find_source_files.ipynb +0 -0
  59. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/github_secrets_in_use.ipynb +0 -0
  60. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/gradle_wrappers.ipynb +0 -0
  61. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/call_graph_data_grid.300.png +0 -0
  62. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/call_graph_uml.300.png +0 -0
  63. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/cobol_find_copybook.300.png +0 -0
  64. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/cobol_relationships.300.png +0 -0
  65. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/cobol_relationships_data_grid.300.png +0 -0
  66. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/comment_language_distribution.300.png +0 -0
  67. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/composite_recipe_results_sankey.300.png +0 -0
  68. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view.300.png +0 -0
  69. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs.300.png +0 -0
  70. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_build_tools.300.png +0 -0
  71. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_db.300.png +0 -0
  72. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_forms.300.png +0 -0
  73. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_lint.300.png +0 -0
  74. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_rtc.300.png +0 -0
  75. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_security.300.png +0 -0
  76. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_ss.300.png +0 -0
  77. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_state.300.png +0 -0
  78. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_testing.300.png +0 -0
  79. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_ui.300.png +0 -0
  80. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_tree_view_nodejs_utility.300.png +0 -0
  81. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin.300.png +0 -0
  82. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_gradle.300.png +0 -0
  83. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_jackson.300.png +0 -0
  84. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_maven.300.png +0 -0
  85. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs.300.png +0 -0
  86. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_build_tools.300.png +0 -0
  87. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_db.300.png +0 -0
  88. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_forms.300.png +0 -0
  89. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_lint.300.png +0 -0
  90. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_rtc.300.png +0 -0
  91. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_security.300.png +0 -0
  92. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_ss.300.png +0 -0
  93. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_state.300.png +0 -0
  94. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_testing.300.png +0 -0
  95. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_ui.300.png +0 -0
  96. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nodejs_utility.300.png +0 -0
  97. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_usage_violin_nuget.300.png +0 -0
  98. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_vulnerabilities.300.png +0 -0
  99. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_vulnerabilities_npm.300.png +0 -0
  100. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/dependency_vulnerabilities_nuget.300.png +0 -0
  101. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/eslint_problems.300.png +0 -0
  102. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/eslint_problems_by_repo.300.png +0 -0
  103. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/find_methods.300.png +0 -0
  104. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/find_methods_ai.300.png +0 -0
  105. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/find_methods_ai_generate_yaml.300.png +0 -0
  106. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/github_secrets_in_use.300.png +0 -0
  107. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/gradle_wrappers.300.png +0 -0
  108. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/language_composition.300.png +0 -0
  109. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/language_composition_by_folder.300.png +0 -0
  110. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/language_composition_by_repo.300.png +0 -0
  111. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/maven_parent_poms.300.png +0 -0
  112. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/parse_failure_stacktraces.300.png +0 -0
  113. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/recipe_performance.300.png +0 -0
  114. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/spring_component_relationships.300.png +0 -0
  115. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/spring_component_relationships_data_grid.300.png +0 -0
  116. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/spring_components_data_grid.300.png +0 -0
  117. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/sql_crud.300.png +0 -0
  118. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/images/text_matches_tree_grid.300.png +0 -0
  119. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/language_composition.ipynb +0 -0
  120. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/language_composition_by_folder.ipynb +0 -0
  121. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/language_composition_by_repo.ipynb +0 -0
  122. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/lst_provenance.ipynb +0 -0
  123. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/maven_parent_poms.ipynb +0 -0
  124. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/parse_failure_stacktraces.ipynb +0 -0
  125. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/recipe_performance.ipynb +0 -0
  126. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/recommendations.ipynb +0 -0
  127. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/resources/plantuml.jar +0 -0
  128. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/reusable/tree_view_nodejs.py +0 -0
  129. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/reusable/violin_nodejs.py +0 -0
  130. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/call_graph_data_grid.yml +0 -0
  131. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/call_graph_uml.yml +0 -0
  132. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/cobol_find_copybook.yml +0 -0
  133. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/cobol_relationships.yml +0 -0
  134. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/cobol_relationships_data_grid.yml +0 -0
  135. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/comment_language_distribution.yml +0 -0
  136. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/composite_recipe_results_sankey.yml +0 -0
  137. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view.yml +0 -0
  138. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs.yml +0 -0
  139. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_build_tools.yml +0 -0
  140. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_db.yml +0 -0
  141. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_forms.yml +0 -0
  142. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_lint.yml +0 -0
  143. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_rtc.yml +0 -0
  144. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_security.yml +0 -0
  145. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_ss.yml +0 -0
  146. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_state.yml +0 -0
  147. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_testing.yml +0 -0
  148. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_ui.yml +0 -0
  149. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_tree_view_nodejs_utility.yml +0 -0
  150. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin.yml +0 -0
  151. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_gradle.yml +0 -0
  152. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_jackson.yml +0 -0
  153. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_maven.yml +0 -0
  154. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs.yml +0 -0
  155. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_build_tools.yml +0 -0
  156. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_db.yml +0 -0
  157. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_forms.yml +0 -0
  158. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_lint.yml +0 -0
  159. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_rtc.yml +0 -0
  160. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_security.yml +0 -0
  161. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_ss.yml +0 -0
  162. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_state.yml +0 -0
  163. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_testing.yml +0 -0
  164. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_ui.yml +0 -0
  165. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nodejs_utility.yml +0 -0
  166. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_usage_violin_nuget.yml +0 -0
  167. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_vulnerabilities.yml +0 -0
  168. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_vulnerabilities_npm.yml +0 -0
  169. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/dependency_vulnerabilities_nuget.yml +0 -0
  170. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/effective_maven_settings.yml +0 -0
  171. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/embeddings_clustering.yml +0 -0
  172. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/eslint_problems.yml +0 -0
  173. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/eslint_problems_by_repo.yml +0 -0
  174. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/find_methods.yml +0 -0
  175. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/find_methods_ai.yml +0 -0
  176. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/find_methods_ai_generate_yaml.yml +0 -0
  177. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/find_source_files.yml +0 -0
  178. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/get_embeddings_and_cluster.yml +0 -0
  179. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/github_secrets_in_use.yml +0 -0
  180. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/gradle_wrappers.yml +0 -0
  181. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/java_versions_by_sourceset.yml +0 -0
  182. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/java_versions_in_use.yml +0 -0
  183. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/language_composition.yml +0 -0
  184. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/language_composition_by_folder.yml +0 -0
  185. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/language_composition_by_repo.yml +0 -0
  186. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/lst_provenance.yml +0 -0
  187. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/maven_parent_poms.yml +0 -0
  188. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/parse_failure_stacktraces.yml +0 -0
  189. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/recipe_performance.yml +0 -0
  190. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/recommendations.yml +0 -0
  191. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/spring_component_relationships.yml +0 -0
  192. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/spring_component_relationships_data_grid.yml +0 -0
  193. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/spring_components_data_grid.yml +0 -0
  194. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/sql_crud.yml +0 -0
  195. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/specs/text_matches_tree_grid.yml +0 -0
  196. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/spring_component_relationships.ipynb +0 -0
  197. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/spring_component_relationships_data_grid.ipynb +0 -0
  198. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/spring_components_data_grid.ipynb +0 -0
  199. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/sql_crud.ipynb +0 -0
  200. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc/text_matches_tree_grid.ipynb +0 -0
  201. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc.egg-info/SOURCES.txt +0 -0
  202. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc.egg-info/dependency_links.txt +0 -0
  203. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc.egg-info/requires.txt +0 -0
  204. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/moderne_visualizations_misc.egg-info/top_level.txt +0 -0
  205. {moderne_visualizations_misc-0.68.0 → moderne_visualizations_misc-0.69.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: moderne_visualizations_misc
3
- Version: 0.68.0
3
+ Version: 0.69.0
4
4
  Summary: Miscellaneous visualizations for the Moderne platform
5
5
  Author-email: Jonathan Schneider <jonathan@moderne.io>, Kyle Scully <kyle@moderne.io>
6
6
  License: Apache-2.0
@@ -0,0 +1,179 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {
7
+ "tags": [
8
+ "parameters"
9
+ ]
10
+ },
11
+ "outputs": [],
12
+ "source": [
13
+ "repository_filter: list[str] = []\n",
14
+ "count_threshold = \"0\""
15
+ ]
16
+ },
17
+ {
18
+ "cell_type": "code",
19
+ "execution_count": null,
20
+ "metadata": {},
21
+ "outputs": [],
22
+ "source": [
23
+ "from code_data_science import data_table as dt\n",
24
+ "import warnings\n",
25
+ "\n",
26
+ "warnings.simplefilter(\"ignore\")\n",
27
+ "\n",
28
+ "df = dt.read_csv(\"../samples/composite_recipe_results_sankey.csv\")\n",
29
+ "\n",
30
+ "df[\"repositoryWithBranch\"] = df[\"repositoryPath\"] + \"/\" + df[\"repositoryBranch\"]\n",
31
+ "# Filter the data frame to only include rows where repositoryWithBranch contain\n",
32
+ "# a term in the repository_filter (case insensitive)\n",
33
+ "if len(repository_filter) > 0:\n",
34
+ " df = df[\n",
35
+ " df[\"repositoryWithBranch\"].str.contains(\"|\".join(repository_filter), case=False)\n",
36
+ " ]"
37
+ ]
38
+ },
39
+ {
40
+ "cell_type": "code",
41
+ "execution_count": null,
42
+ "metadata": {},
43
+ "outputs": [],
44
+ "source": [
45
+ "df = df[[\"parentRecipe\", \"recipe\"]].assign(count=lambda r: 1)\n",
46
+ "recipe_counts = (\n",
47
+ " df[[\"parentRecipe\", \"recipe\", \"count\"]]\n",
48
+ " .groupby(by=[\"parentRecipe\", \"recipe\"])[\"count\"]\n",
49
+ " .count()\n",
50
+ " .sort_values(ascending=False)\n",
51
+ " .reset_index(name=\"count\")\n",
52
+ ")\n",
53
+ "recipe_counts[\"parentRecipe\"] = recipe_counts[\"parentRecipe\"].transform(\n",
54
+ " lambda s: s.split(\".\")[-1]\n",
55
+ ")\n",
56
+ "recipe_counts[\"recipe\"] = recipe_counts[\"recipe\"].transform(lambda s: s.split(\".\")[-1])\n",
57
+ "\n",
58
+ "# sort recipe_counts by count\n",
59
+ "recipe_counts = recipe_counts.sort_values(by=[\"count\"], ascending=False)\n",
60
+ "\n",
61
+ "count_threshold_int = int(count_threshold)\n",
62
+ "\n",
63
+ "if count_threshold_int > 0:\n",
64
+ " recipe_counts = recipe_counts[recipe_counts[\"count\"] > count_threshold_int]"
65
+ ]
66
+ },
67
+ {
68
+ "cell_type": "code",
69
+ "execution_count": null,
70
+ "metadata": {},
71
+ "outputs": [],
72
+ "source": [
73
+ "import plotly.graph_objects as go\n",
74
+ "\n",
75
+ "# Extract all unique nodes (parent and child recipes)\n",
76
+ "all_nodes = list(set(recipe_counts[\"parentRecipe\"]).union(set(recipe_counts[\"recipe\"])))\n",
77
+ "\n",
78
+ "# Create node indices mapping for preparing for plotly\n",
79
+ "node_indices = {node: i for i, node in enumerate(all_nodes)}\n",
80
+ "\n",
81
+ "# iterates over each row in recipe_counts and find the index of the 'parentRecipe' in node_indices and adds it to the source list.\n",
82
+ "source = [node_indices[row[\"parentRecipe\"]] for _, row in recipe_counts.iterrows()]\n",
83
+ "\n",
84
+ "# iterates over each row in recipe_counts and find the index of the 'recipe' in node_indices and adds it to the target list.\n",
85
+ "target = [node_indices[row[\"recipe\"]] for _, row in recipe_counts.iterrows()]\n",
86
+ "\n",
87
+ "# convert the 'count' column to a list\n",
88
+ "value = list(recipe_counts[\"count\"])\n",
89
+ "\n",
90
+ "# Format labels with node names and counts\n",
91
+ "\n",
92
+ "\n",
93
+ "def getCount(node):\n",
94
+ " left = recipe_counts[recipe_counts[\"recipe\"] == node][\"count\"].sum()\n",
95
+ " if left == 0:\n",
96
+ " return recipe_counts[recipe_counts[\"parentRecipe\"] == node][\"count\"].sum()\n",
97
+ " else:\n",
98
+ " return left\n",
99
+ "\n",
100
+ "\n",
101
+ "formatted_labels = [f\"{node} - {getCount(node)}\" for node in all_nodes]\n",
102
+ "base_colors = [\n",
103
+ " \"#2f42ff\",\n",
104
+ " \"#7e9bd2\",\n",
105
+ " \"#27aa88\",\n",
106
+ " \"#dcefde\",\n",
107
+ " \"#84C9AA\",\n",
108
+ " \"#ECB81F\",\n",
109
+ " \"#F9A91B\",\n",
110
+ " \"#DB4197\",\n",
111
+ " \"#992FB9\",\n",
112
+ " \"#D9D8E8\",\n",
113
+ " \"#FF3232\",\n",
114
+ "]\n",
115
+ "\n",
116
+ "# create a color palette for the nodes\n",
117
+ "# important that the number of colors is equal to the number of nodes\n",
118
+ "\n",
119
+ "colors = []\n",
120
+ "for i in range(len(all_nodes)):\n",
121
+ " if i < len(base_colors):\n",
122
+ " colors.append(base_colors[i])\n",
123
+ " else:\n",
124
+ " colors.append(base_colors[i % len(base_colors)])\n",
125
+ "\n",
126
+ "\n",
127
+ "# Create the Sankey diagram\n",
128
+ "fig = go.Figure(\n",
129
+ " data=[\n",
130
+ " go.Sankey(\n",
131
+ " node=dict(\n",
132
+ " pad=15,\n",
133
+ " thickness=15,\n",
134
+ " line=dict(color=\"black\", width=0.5),\n",
135
+ " label=formatted_labels,\n",
136
+ " color=colors,\n",
137
+ " ),\n",
138
+ " link=dict(\n",
139
+ " source=source,\n",
140
+ " target=target,\n",
141
+ " value=value,\n",
142
+ " ),\n",
143
+ " )\n",
144
+ " ]\n",
145
+ ")\n",
146
+ "\n",
147
+ "# Update layout\n",
148
+ "fig.update_layout(\n",
149
+ " title_text=\"Recipes that made changes\",\n",
150
+ " font_size=10,\n",
151
+ " height=max(len(all_nodes) * 15, 400),\n",
152
+ ")\n",
153
+ "\n",
154
+ "fig.show()"
155
+ ]
156
+ }
157
+ ],
158
+ "metadata": {
159
+ "kernelspec": {
160
+ "display_name": "Python 3",
161
+ "language": "python",
162
+ "name": "python3"
163
+ },
164
+ "language_info": {
165
+ "codemirror_mode": {
166
+ "name": "ipython",
167
+ "version": 3
168
+ },
169
+ "file_extension": ".py",
170
+ "mimetype": "text/x-python",
171
+ "name": "python",
172
+ "nbconvert_exporter": "python",
173
+ "pygments_lexer": "ipython3",
174
+ "version": "3.11.4"
175
+ }
176
+ },
177
+ "nbformat": 4,
178
+ "nbformat_minor": 2
179
+ }
@@ -33490,7 +33490,7 @@
33490
33490
  " log_x=False,\n",
33491
33491
  " color=\"cluster id\",\n",
33492
33492
  " hover_name=\"name\",\n",
33493
- " color_discrete_sequence=colors\n",
33493
+ " color_discrete_sequence=colors,\n",
33494
33494
  ")\n",
33495
33495
  "fig.update_layout(showlegend=False)\n",
33496
33496
  "\n",
@@ -5029,16 +5029,19 @@
5029
5029
  " device=\"cpu\",\n",
5030
5030
  " engine=\"optimum\",\n",
5031
5031
  " compile=True,\n",
5032
- " batch_size=2\n",
5032
+ " batch_size=2,\n",
5033
5033
  ")\n",
5034
5034
  "engine = AsyncEmbeddingEngine.from_args(engine_args)\n",
5035
5035
  "\n",
5036
5036
  "# Define a single function to get embeddings\n",
5037
+ "\n",
5038
+ "\n",
5037
5039
  "async def get_embeddings(sentences: list[str]) -> list:\n",
5038
5040
  " async with engine: # Ensure engine is properly started and stopped\n",
5039
5041
  " embeddings, _ = await engine.embed(sentences=sentences)\n",
5040
5042
  " return embeddings\n",
5041
5043
  "\n",
5044
+ "\n",
5042
5045
  "# Track time for embeddings\n",
5043
5046
  "start_time_embeddings = time.time_ns()\n",
5044
5047
  "loop = asyncio.get_running_loop()\n",
@@ -5058,14 +5061,16 @@
5058
5061
  "\n",
5059
5062
  "# Apply Gaussian Mixture Model\n",
5060
5063
  "start_time_gmm = time.time_ns()\n",
5061
- "gmm = GaussianMixture(n_components=6, covariance_type='full', random_state=42)\n",
5064
+ "gmm = GaussianMixture(n_components=6, covariance_type=\"full\", random_state=42)\n",
5062
5065
  "labels = gmm.fit_predict(indices)\n",
5063
5066
  "end_time_gmm = time.time_ns()\n",
5064
5067
  "gmm_time_seconds = (end_time_gmm - start_time_gmm) / 1e9\n",
5065
5068
  "\n",
5066
5069
  "df[\"x\"] = x\n",
5067
5070
  "df[\"y\"] = y\n",
5068
- "df[\"cluster id\"] = labels.astype(\"str\") # As string so the colors and legend are discrete\n",
5071
+ "df[\"cluster id\"] = labels.astype(\n",
5072
+ " \"str\"\n",
5073
+ ") # As string so the colors and legend are discrete\n",
5069
5074
  "df.sort_values(by=\"cluster id\", inplace=True)\n",
5070
5075
  "\n",
5071
5076
  "custom_palette = [\n",
@@ -5078,7 +5083,7 @@
5078
5083
  " palette.__moderne_color_map[\"yellow\"][700],\n",
5079
5084
  "]\n",
5080
5085
  "\n",
5081
- "colors = custom_palette[:gmm.n_components]\n",
5086
+ "colors = custom_palette[: gmm.n_components]\n",
5082
5087
  "\n",
5083
5088
  "# Create the figure with time metrics in the title\n",
5084
5089
  "fig = px.scatter(\n",
@@ -5088,39 +5093,45 @@
5088
5093
  " log_x=False,\n",
5089
5094
  " color=\"cluster id\",\n",
5090
5095
  " hover_name=\"method\",\n",
5091
- " color_discrete_sequence=colors\n",
5096
+ " color_discrete_sequence=colors,\n",
5092
5097
  ")\n",
5093
5098
  "\n",
5099
+ "\n",
5094
5100
  "def draw_ellipse_plotly(mean, covariance, fig, n_std=3, **kwargs):\n",
5095
5101
  " \"\"\"Draw an ellipse with a given mean and covariance using Plotly.\"\"\"\n",
5096
5102
  " # Convert covariance to principal axes\n",
5097
5103
  " U, s, Vt = np.linalg.svd(covariance)\n",
5098
5104
  " angle = np.degrees(np.arctan2(U[1, 0], U[0, 0]))\n",
5099
5105
  " width, height = 2 * np.sqrt(s)\n",
5100
- " \n",
5106
+ "\n",
5101
5107
  " # Plotly does not directly support ellipses, so we approximate with a scatter plot\n",
5102
5108
  " theta = np.linspace(0, 2 * np.pi, 100)\n",
5103
5109
  " ellipse_x = width / 2 * np.cos(theta)\n",
5104
5110
  " ellipse_y = height / 2 * np.sin(theta)\n",
5105
5111
  "\n",
5106
- " R = np.array([[np.cos(np.radians(angle)), -np.sin(np.radians(angle))],\n",
5107
- " [np.sin(np.radians(angle)), np.cos(np.radians(angle))]])\n",
5112
+ " R = np.array(\n",
5113
+ " [\n",
5114
+ " [np.cos(np.radians(angle)), -np.sin(np.radians(angle))],\n",
5115
+ " [np.sin(np.radians(angle)), np.cos(np.radians(angle))],\n",
5116
+ " ]\n",
5117
+ " )\n",
5108
5118
  " ellipse_coords = np.dot(R, np.array([ellipse_x, ellipse_y]))\n",
5109
- " \n",
5119
+ "\n",
5110
5120
  " # For each standard deviation, plot an ellipse\n",
5111
5121
  " for nsig in range(1, n_std + 1):\n",
5112
5122
  " fig.add_trace(\n",
5113
5123
  " go.Scatter(\n",
5114
5124
  " x=ellipse_coords[0] * nsig + mean[0],\n",
5115
5125
  " y=ellipse_coords[1] * nsig + mean[1],\n",
5116
- " mode='lines',\n",
5117
- " **kwargs\n",
5126
+ " mode=\"lines\",\n",
5127
+ " **kwargs,\n",
5118
5128
  " )\n",
5119
5129
  " )\n",
5120
5130
  "\n",
5131
+ "\n",
5121
5132
  "# Draw ellipses around GMM clusters\n",
5122
5133
  "for mean, covar in zip(gmm.means_, gmm.covariances_):\n",
5123
- " draw_ellipse_plotly(mean, covar, fig, n_std=3, line=dict(color='red'), opacity=0.2)\n",
5134
+ " draw_ellipse_plotly(mean, covar, fig, n_std=3, line=dict(color=\"red\"), opacity=0.2)\n",
5124
5135
  "\n",
5125
5136
  "fig.update_layout(\n",
5126
5137
  " showlegend=False,\n",
@@ -5128,7 +5139,7 @@
5128
5139
  " f\"Embedding Time: {embedding_time_seconds:.2f} sec | \"\n",
5129
5140
  " f\"t-SNE Time: {tsne_time_seconds:.2f} sec | \"\n",
5130
5141
  " f\"GMM Time: {gmm_time_seconds:.2f} sec\"\n",
5131
- " )\n",
5142
+ " ),\n",
5132
5143
  ")\n",
5133
5144
  "\n",
5134
5145
  "fig.show()"
@@ -20,19 +20,19 @@
20
20
  "metadata": {},
21
21
  "outputs": [],
22
22
  "source": [
23
- "data = df.drop(\n",
24
- " columns=[\n",
25
- " \"repositoryOrigin\",\n",
26
- " \"repositoryPath\",\n",
27
- " \"repositoryBranch\",\n",
28
- " \"projectName\",\n",
29
- " \"sourceSetName\",\n",
30
- " \"vmVendor\",\n",
31
- " \"createdBy\",\n",
32
- " \"sourceCompatibility\",\n",
33
- " \"targetCompatibility\",\n",
34
- " ]\n",
35
- ")\n",
23
+ "columns_to_drop = [\n",
24
+ " \"repositoryOrigin\",\n",
25
+ " \"repositoryPath\",\n",
26
+ " \"repositoryBranch\",\n",
27
+ " \"projectName\",\n",
28
+ " \"sourceSetName\",\n",
29
+ " \"vmVendor\",\n",
30
+ " \"createdBy\",\n",
31
+ " \"sourceCompatibility\",\n",
32
+ " \"targetCompatibility\",\n",
33
+ "]\n",
34
+ "\n",
35
+ "data = df.drop(columns=[col for col in columns_to_drop if col in df.columns])\n",
36
36
  "data"
37
37
  ]
38
38
  },
@@ -69,7 +69,7 @@
69
69
  ],
70
70
  "metadata": {
71
71
  "kernelspec": {
72
- "display_name": "Python 3 (ipykernel)",
72
+ "display_name": "Python 3",
73
73
  "language": "python",
74
74
  "name": "python3"
75
75
  },
@@ -83,7 +83,7 @@
83
83
  "name": "python",
84
84
  "nbconvert_exporter": "python",
85
85
  "pygments_lexer": "ipython3",
86
- "version": "3.9.17"
86
+ "version": "3.10.14"
87
87
  }
88
88
  },
89
89
  "nbformat": 4,
@@ -15,21 +15,21 @@
15
15
  },
16
16
  {
17
17
  "cell_type": "code",
18
- "execution_count": null,
18
+ "execution_count": 2,
19
19
  "id": "701147ab-62bd-490f-8a26-8ad1dd80f4d7",
20
20
  "metadata": {},
21
21
  "outputs": [],
22
22
  "source": [
23
- "data = df.drop(\n",
24
- " columns=[\n",
25
- " \"repositoryOrigin\",\n",
26
- " \"repositoryPath\",\n",
27
- " \"repositoryBranch\",\n",
28
- " \"scmType\",\n",
29
- " \"repositoryLink\",\n",
30
- " \"targetVersion\",\n",
31
- " ]\n",
32
- ")\n",
23
+ "columns_to_drop = [\n",
24
+ " \"repositoryOrigin\",\n",
25
+ " \"repositoryPath\",\n",
26
+ " \"repositoryBranch\",\n",
27
+ " \"scmType\",\n",
28
+ " \"repositoryLink\",\n",
29
+ " \"targetVersion\",\n",
30
+ "]\n",
31
+ "\n",
32
+ "data = df.drop(columns=[col for col in columns_to_drop if col in df.columns])\n",
33
33
  "data"
34
34
  ]
35
35
  },
@@ -40,11 +40,7 @@
40
40
  "metadata": {},
41
41
  "outputs": [],
42
42
  "source": [
43
- "versions = (\n",
44
- " data.groupby([\"sourceVersion\"], as_index=True)\n",
45
- " .value_counts()\n",
46
- " .fillna(0)\n",
47
- ")\n",
43
+ "versions = data.groupby([\"sourceVersion\"], as_index=True).value_counts().fillna(0)\n",
48
44
  "versions"
49
45
  ]
50
46
  },
@@ -66,7 +62,7 @@
66
62
  ],
67
63
  "metadata": {
68
64
  "kernelspec": {
69
- "display_name": "Python 3 (ipykernel)",
65
+ "display_name": "Python 3",
70
66
  "language": "python",
71
67
  "name": "python3"
72
68
  },
@@ -80,7 +76,7 @@
80
76
  "name": "python",
81
77
  "nbconvert_exporter": "python",
82
78
  "pygments_lexer": "ipython3",
83
- "version": "3.9.17"
79
+ "version": "3.10.14"
84
80
  }
85
81
  },
86
82
  "nbformat": 4,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: moderne_visualizations_misc
3
- Version: 0.68.0
3
+ Version: 0.69.0
4
4
  Summary: Miscellaneous visualizations for the Moderne platform
5
5
  Author-email: Jonathan Schneider <jonathan@moderne.io>, Kyle Scully <kyle@moderne.io>
6
6
  License: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  # @see https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
2
2
  [project]
3
3
  name = "moderne_visualizations_misc"
4
- version = "0.68.0"
4
+ version = "0.69.0"
5
5
  description = "Miscellaneous visualizations for the Moderne platform"
6
6
  authors = [
7
7
  { name = "Jonathan Schneider", email = "jonathan@moderne.io" },
@@ -1,167 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": null,
6
- "metadata": {
7
- "tags": [
8
- "parameters"
9
- ]
10
- },
11
- "outputs": [],
12
- "source": [
13
- "repository_filter: list[str] = []\n",
14
- "count_threshold = \"0\""
15
- ]
16
- },
17
- {
18
- "cell_type": "code",
19
- "execution_count": null,
20
- "metadata": {},
21
- "outputs": [],
22
- "source": [
23
- "from code_data_science import data_table as dt\n",
24
- "import warnings\n",
25
- "\n",
26
- "warnings.simplefilter(\"ignore\")\n",
27
- "\n",
28
- "df = dt.read_csv(\"../samples/composite_recipe_results_sankey.csv\")\n",
29
- "\n",
30
- "df[\"repositoryWithBranch\"] = df[\"repositoryPath\"] + \"/\" + df[\"repositoryBranch\"]\n",
31
- "# Filter the data frame to only include rows where repositoryWithBranch contain\n",
32
- "# a term in the repository_filter (case insensitive)\n",
33
- "if len(repository_filter) > 0:\n",
34
- " df = df[\n",
35
- " df[\"repositoryWithBranch\"].str.contains(\"|\".join(repository_filter), case=False)\n",
36
- " ]"
37
- ]
38
- },
39
- {
40
- "cell_type": "code",
41
- "execution_count": null,
42
- "metadata": {},
43
- "outputs": [],
44
- "source": [
45
- "df = df[[\"parentRecipe\", \"recipe\"]].assign(count=lambda r: 1)\n",
46
- "recipe_counts = (\n",
47
- " df[[\"parentRecipe\", \"recipe\", \"count\"]]\n",
48
- " .groupby(by=[\"parentRecipe\", \"recipe\"])[\"count\"]\n",
49
- " .count()\n",
50
- " .sort_values(ascending=False)\n",
51
- " .reset_index(name=\"count\")\n",
52
- ")\n",
53
- "recipe_counts[\"parentRecipe\"] = recipe_counts[\"parentRecipe\"].transform(\n",
54
- " lambda s: s.split(\".\")[-1]\n",
55
- ")\n",
56
- "recipe_counts[\"recipe\"] = recipe_counts[\"recipe\"].transform(lambda s: s.split(\".\")[-1])\n",
57
- "\n",
58
- "# sort recipe_counts by count\n",
59
- "recipe_counts = recipe_counts.sort_values(by=[\"count\"], ascending=False)\n",
60
- "\n",
61
- "count_threshold_int = int(count_threshold)\n",
62
- "\n",
63
- "if count_threshold_int > 0:\n",
64
- " recipe_counts = recipe_counts[recipe_counts[\"count\"] > count_threshold_int]"
65
- ]
66
- },
67
- {
68
- "cell_type": "code",
69
- "execution_count": null,
70
- "metadata": {},
71
- "outputs": [],
72
- "source": [
73
- "import plotly.graph_objects as go\n",
74
- "\n",
75
- "# Extract all unique nodes (parent and child recipes)\n",
76
- "all_nodes = list(set(recipe_counts[\"parentRecipe\"]).union(set(recipe_counts[\"recipe\"])))\n",
77
- "\n",
78
- "# Create node indices mapping for preparing for plotly\n",
79
- "node_indices = {node: i for i, node in enumerate(all_nodes)}\n",
80
- "\n",
81
- "# iterates over each row in recipe_counts and find the index of the 'parentRecipe' in node_indices and adds it to the source list.\n",
82
- "source = [node_indices[row[\"parentRecipe\"]] for _, row in recipe_counts.iterrows()]\n",
83
- "\n",
84
- "# iterates over each row in recipe_counts and find the index of the 'recipe' in node_indices and adds it to the target list.\n",
85
- "target = [node_indices[row[\"recipe\"]] for _, row in recipe_counts.iterrows()]\n",
86
- "\n",
87
- "# convert the 'count' column to a list\n",
88
- "value = list(recipe_counts[\"count\"])\n",
89
- "\n",
90
- "# Format labels with node names and counts\n",
91
- "\n",
92
- "\n",
93
- "def getCount(node):\n",
94
- " left = recipe_counts[recipe_counts[\"recipe\"] == node][\"count\"].sum()\n",
95
- " if left == 0:\n",
96
- " return recipe_counts[recipe_counts[\"parentRecipe\"] == node][\"count\"].sum()\n",
97
- " else:\n",
98
- " return left\n",
99
- "\n",
100
- "\n",
101
- "formatted_labels = [f\"{node} - {getCount(node)}\" for node in all_nodes]\n",
102
- "base_colors= [\"#2f42ff\", \"#7e9bd2\", \"#27aa88\", \"#dcefde\", \"#84C9AA\", \"#ECB81F\", \"#F9A91B\", \"#DB4197\", \"#992FB9\", \"#D9D8E8\", \"#FF3232\"]\n",
103
- "\n",
104
- "# create a color palette for the nodes\n",
105
- "# important that the number of colors is equal to the number of nodes\n",
106
- "\n",
107
- "colors = []\n",
108
- "for i in range(len(all_nodes)):\n",
109
- " if i < len(base_colors):\n",
110
- " colors.append(base_colors[i])\n",
111
- " else:\n",
112
- " colors.append(base_colors[i % len(base_colors)])\n",
113
- "\n",
114
- "\n",
115
- "# Create the Sankey diagram\n",
116
- "fig = go.Figure(\n",
117
- " data=[\n",
118
- " go.Sankey(\n",
119
- " node=dict(\n",
120
- " pad=15,\n",
121
- " thickness=15,\n",
122
- " line=dict(color=\"black\", width=0.5),\n",
123
- " label=formatted_labels,\n",
124
- " color=colors\n",
125
- " ),\n",
126
- " link=dict(\n",
127
- " source=source,\n",
128
- " target=target,\n",
129
- " value=value,\n",
130
- " ),\n",
131
- " )\n",
132
- " ]\n",
133
- ")\n",
134
- "\n",
135
- "# Update layout\n",
136
- "fig.update_layout(\n",
137
- " title_text=\"Recipes that made changes\",\n",
138
- " font_size=10,\n",
139
- " height=max(len(all_nodes) * 15, 400),\n",
140
- ")\n",
141
- "\n",
142
- "fig.show()"
143
- ]
144
- }
145
- ],
146
- "metadata": {
147
- "kernelspec": {
148
- "display_name": "Python 3",
149
- "language": "python",
150
- "name": "python3"
151
- },
152
- "language_info": {
153
- "codemirror_mode": {
154
- "name": "ipython",
155
- "version": 3
156
- },
157
- "file_extension": ".py",
158
- "mimetype": "text/x-python",
159
- "name": "python",
160
- "nbconvert_exporter": "python",
161
- "pygments_lexer": "ipython3",
162
- "version": "3.11.4"
163
- }
164
- },
165
- "nbformat": 4,
166
- "nbformat_minor": 2
167
- }