griptape-nodes 0.65.6__py3-none-any.whl → 0.66.0__py3-none-any.whl

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 (61) hide show
  1. griptape_nodes/common/node_executor.py +352 -27
  2. griptape_nodes/drivers/storage/base_storage_driver.py +12 -3
  3. griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py +18 -2
  4. griptape_nodes/drivers/storage/local_storage_driver.py +42 -5
  5. griptape_nodes/exe_types/base_iterative_nodes.py +0 -1
  6. griptape_nodes/exe_types/connections.py +42 -0
  7. griptape_nodes/exe_types/core_types.py +2 -2
  8. griptape_nodes/exe_types/node_groups/__init__.py +2 -1
  9. griptape_nodes/exe_types/node_groups/base_iterative_node_group.py +177 -0
  10. griptape_nodes/exe_types/node_groups/base_node_group.py +1 -0
  11. griptape_nodes/exe_types/node_groups/subflow_node_group.py +35 -2
  12. griptape_nodes/exe_types/param_types/parameter_audio.py +1 -1
  13. griptape_nodes/exe_types/param_types/parameter_bool.py +1 -1
  14. griptape_nodes/exe_types/param_types/parameter_button.py +1 -1
  15. griptape_nodes/exe_types/param_types/parameter_float.py +1 -1
  16. griptape_nodes/exe_types/param_types/parameter_image.py +1 -1
  17. griptape_nodes/exe_types/param_types/parameter_int.py +1 -1
  18. griptape_nodes/exe_types/param_types/parameter_number.py +1 -1
  19. griptape_nodes/exe_types/param_types/parameter_string.py +1 -1
  20. griptape_nodes/exe_types/param_types/parameter_three_d.py +1 -1
  21. griptape_nodes/exe_types/param_types/parameter_video.py +1 -1
  22. griptape_nodes/machines/control_flow.py +5 -4
  23. griptape_nodes/machines/dag_builder.py +121 -55
  24. griptape_nodes/machines/fsm.py +10 -0
  25. griptape_nodes/machines/parallel_resolution.py +39 -38
  26. griptape_nodes/machines/sequential_resolution.py +29 -3
  27. griptape_nodes/node_library/library_registry.py +41 -2
  28. griptape_nodes/retained_mode/events/library_events.py +147 -8
  29. griptape_nodes/retained_mode/events/os_events.py +12 -4
  30. griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py +2 -0
  31. griptape_nodes/retained_mode/managers/fitness_problems/libraries/incompatible_requirements_problem.py +34 -0
  32. griptape_nodes/retained_mode/managers/flow_manager.py +133 -20
  33. griptape_nodes/retained_mode/managers/library_manager.py +1324 -564
  34. griptape_nodes/retained_mode/managers/node_manager.py +9 -3
  35. griptape_nodes/retained_mode/managers/os_manager.py +429 -65
  36. griptape_nodes/retained_mode/managers/resource_types/compute_resource.py +82 -0
  37. griptape_nodes/retained_mode/managers/resource_types/os_resource.py +17 -0
  38. griptape_nodes/retained_mode/managers/static_files_manager.py +21 -8
  39. griptape_nodes/retained_mode/managers/version_compatibility_manager.py +3 -3
  40. griptape_nodes/utils/git_utils.py +2 -17
  41. griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py +5 -5
  42. griptape_nodes/version_compatibility/versions/v0_65_4/__init__.py +5 -0
  43. griptape_nodes/version_compatibility/versions/v0_65_4/run_in_parallel_to_run_in_order.py +79 -0
  44. griptape_nodes/version_compatibility/versions/v0_65_5/__init__.py +5 -0
  45. griptape_nodes/version_compatibility/versions/v0_65_5/flux_2_removed_parameters.py +85 -0
  46. {griptape_nodes-0.65.6.dist-info → griptape_nodes-0.66.0.dist-info}/METADATA +1 -1
  47. {griptape_nodes-0.65.6.dist-info → griptape_nodes-0.66.0.dist-info}/RECORD +49 -54
  48. griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py +0 -45
  49. griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py +0 -191
  50. griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py +0 -346
  51. griptape_nodes/retained_mode/managers/library_lifecycle/library_fsm.py +0 -439
  52. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/__init__.py +0 -17
  53. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/base.py +0 -82
  54. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/github.py +0 -116
  55. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/local_file.py +0 -367
  56. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/package.py +0 -104
  57. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py +0 -155
  58. griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py +0 -18
  59. griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py +0 -12
  60. {griptape_nodes-0.65.6.dist-info → griptape_nodes-0.66.0.dist-info}/WHEEL +0 -0
  61. {griptape_nodes-0.65.6.dist-info → griptape_nodes-0.66.0.dist-info}/entry_points.txt +0 -0
@@ -42,7 +42,7 @@ griptape_nodes/common/macro_parser/matching.py,sha256=hnlPIihz8W1TGnfq4anbBGciwg
42
42
  griptape_nodes/common/macro_parser/parsing.py,sha256=_37L3lCQFeetamWIiHT0C7eW1E3Wyx5V8y8OWzIUw_g,7428
43
43
  griptape_nodes/common/macro_parser/resolution.py,sha256=30_bAIRMKWw-kM3E1ne-my16xT1Wd734JMmZSOZtNPA,6937
44
44
  griptape_nodes/common/macro_parser/segments.py,sha256=r-WbZas1nSc-PlEdAZ7DycNoD6IUf3R_nhGo3T9vIa8,1010
45
- griptape_nodes/common/node_executor.py,sha256=yONxXkq2ueZl8pzZb-xubRh_xIVgimwNsOx76r4SZSc,120082
45
+ griptape_nodes/common/node_executor.py,sha256=NOHt1U7ASCLBqAlGoxAG4U57kwLdhuSsLmv0ujCvmcc,134316
46
46
  griptape_nodes/common/project_templates/__init__.py,sha256=5DP6Sa6ClsdDcjD30pkK0iTTysTgGdRKEkeY7ztHZyc,1541
47
47
  griptape_nodes/common/project_templates/default_project_template.py,sha256=PJFPfziH0EOGVxU5L0wZnc21bVVweW4S7wcnGPF45Co,3120
48
48
  griptape_nodes/common/project_templates/defaults/README.md,sha256=1ou6_OFi7-t86nj-7tulW1vxNMtsvkJmNxr6SseG8hA,1080
@@ -53,9 +53,9 @@ griptape_nodes/common/project_templates/situation.py,sha256=MlpBYrtPvkzIa_j_1NFe
53
53
  griptape_nodes/common/project_templates/validation.py,sha256=LPm0gri05ZIbSfCqOM4duuaXPIeAk3YWMstM5w5O8ho,4399
54
54
  griptape_nodes/drivers/__init__.py,sha256=tHmiFQn6uJyFVhC2PrqHgRUH3d3yDsqMQpWqRasmaqA,42
55
55
  griptape_nodes/drivers/storage/__init__.py,sha256=_7p8vJt3YnnF6sD3Uxxw38c-gazuMIHSS-m3G6sa2Qk,208
56
- griptape_nodes/drivers/storage/base_storage_driver.py,sha256=47PrMzxOuJhV2ee4CbPT7YOqR2MjlHr3VxhGON_ygio,3945
57
- griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=qQctInOvfKRJdqTiW8T3ycjre2FDGTb9-JtzEtiCHVM,6870
58
- griptape_nodes/drivers/storage/local_storage_driver.py,sha256=lhgi1ATTp0GU5vcXE-tLr3G76eiINfkGo2p_b1mfOYI,3760
56
+ griptape_nodes/drivers/storage/base_storage_driver.py,sha256=rMOe9sdUR3QwTgbLd--nSqaXjIs5lm-fXAJvLaNhiRc,4466
57
+ griptape_nodes/drivers/storage/griptape_cloud_storage_driver.py,sha256=GG1pAZT65EvrSAl38trGJqZMzTfh85Iad6Usvxa2F_4,7435
58
+ griptape_nodes/drivers/storage/local_storage_driver.py,sha256=lTjtm22iQgm6Df_QK-qwZlDTdmcSXbrM7Yi7gr2q8WA,5601
59
59
  griptape_nodes/drivers/storage/storage_backend.py,sha256=3QBIwrgPc1krBIiPYLoK2swhIPDiKJnnucOEdyx7y3c,184
60
60
  griptape_nodes/drivers/thread_storage/__init__.py,sha256=JkCafJ978K63ad8PWtTIC7af70nxMjbp13ZJz2_55Bs,604
61
61
  griptape_nodes/drivers/thread_storage/base_thread_storage_driver.py,sha256=yckq3ckw5ZQgBz-wwUVdYzTht9r0dBB1DdJNgrt63ZM,2944
@@ -63,13 +63,14 @@ griptape_nodes/drivers/thread_storage/griptape_cloud_thread_storage_driver.py,sh
63
63
  griptape_nodes/drivers/thread_storage/local_thread_storage_driver.py,sha256=I1p2XudP89sUMsRa0DBxGXzsOFEpURLbtF01C_Wpkts,5406
64
64
  griptape_nodes/drivers/thread_storage/thread_storage_backend.py,sha256=QXLvFOZrFx7aPBmwVGaN-IHxwRAf_sXN7YWKY6tcwgE,204
65
65
  griptape_nodes/exe_types/__init__.py,sha256=wGGwKGX9-TSarUFbXpDvdU_J7eXIbWTBl_NCLOZa-G8,32
66
- griptape_nodes/exe_types/base_iterative_nodes.py,sha256=uCeZaf0xT7zim1EgC0cJ5V2aa1vUECYV56IKYjP1-uo,43865
67
- griptape_nodes/exe_types/connections.py,sha256=sARiIFLGOKTLetdVMS_VtJUfxvJtSxfwK0YHJpInZZM,19814
68
- griptape_nodes/exe_types/core_types.py,sha256=8MHHCuv2726T1DAuI3WIeyD9C__hMyYZB5nr669U90U,100810
66
+ griptape_nodes/exe_types/base_iterative_nodes.py,sha256=z2u4Pb9iqy2Zl3gz_LB7k6hmxYyet1Z6sLjF8afPN_0,43810
67
+ griptape_nodes/exe_types/connections.py,sha256=HcM_fwWivMsXk5q6K7ZBSJpmK9THQwX_xLS_daF0PDQ,21737
68
+ griptape_nodes/exe_types/core_types.py,sha256=TrSd_Z-99epMILmqcnr2kIPeUTuQuC7ghyWAOh0B73E,100822
69
69
  griptape_nodes/exe_types/flow.py,sha256=2iAh3vN5wnMVxTc5jcPBg9TSiASq1DGIm5jgpO9Bdq4,5732
70
- griptape_nodes/exe_types/node_groups/__init__.py,sha256=vcZVzmN6yDlxlwf857ndAFchPQf7cXi_zn1HyiknX_4,210
71
- griptape_nodes/exe_types/node_groups/base_node_group.py,sha256=Vx3pQ6gxy-0t8x_DetVdFtaQU8PAYi71bFTepkeDOeg,841
72
- griptape_nodes/exe_types/node_groups/subflow_node_group.py,sha256=ZyAYLU2_HaaPFczOw0CQYm74vmE0Dx0LtxV_FkAsAk0,48366
70
+ griptape_nodes/exe_types/node_groups/__init__.py,sha256=N-x5jU8XthYShF9TYnP90pd9DfUE5toiXb5lEoGFL-A,298
71
+ griptape_nodes/exe_types/node_groups/base_iterative_node_group.py,sha256=xy05VkgLQORVE_jr5eCkAprCSlTiduCYkZkNHQGH-Cc,6343
72
+ griptape_nodes/exe_types/node_groups/base_node_group.py,sha256=jXgmI2lLdCPK6Wh19LxSzsit6wIpRw6AcPqmMF9bjc8,885
73
+ griptape_nodes/exe_types/node_groups/subflow_node_group.py,sha256=oIyX0VZcJvJ32KFqAsFbdMvrT-r_z8L8uclrwzCQceU,49972
73
74
  griptape_nodes/exe_types/node_types.py,sha256=pPljG84zJ6Wd6yzcRjnK0n1805b-Jyzxx7-NFox66QE,84227
74
75
  griptape_nodes/exe_types/param_components/README.md,sha256=mcNFxJIan9CGTnecsrJ8mkHC55dlA3fb7k4HFznou-k,14850
75
76
  griptape_nodes/exe_types/param_components/__init__.py,sha256=ocm75WnsgiD6ozKVGFhoH9cQe_FEzeF2osxrRujOes0,60
@@ -86,27 +87,27 @@ griptape_nodes/exe_types/param_components/log_parameter.py,sha256=K6XRWVIpL9MtQ6
86
87
  griptape_nodes/exe_types/param_components/progress_bar_component.py,sha256=GrAFTOrLNAx6q9zfOqiioPTG_NLHKhTe9NiZOo6zGSc,1949
87
88
  griptape_nodes/exe_types/param_components/seed_parameter.py,sha256=nXyi9bPCK9LuRB6s4Q2ezwdboIaivEObglNrSFn0y-0,2045
88
89
  griptape_nodes/exe_types/param_types/__init__.py,sha256=xEEmKvIFF6M7zVjQZCupbbv6SZKt-itD-rPtfRhxJVg,53
89
- griptape_nodes/exe_types/param_types/parameter_audio.py,sha256=Uv7FI4_BFvtD0Pv6FMF6PCNijgo7Cc9jU75ceSpLebw,9413
90
- griptape_nodes/exe_types/param_types/parameter_bool.py,sha256=MyJlYYKAyRtu-V8GqFdV6jAtwRk8NRjj6LO8SZ9BQo8,8094
91
- griptape_nodes/exe_types/param_types/parameter_button.py,sha256=GnD484y3NzpEtkeuSX44dQlTngxfLJHBDWZIDFXf2p4,17171
92
- griptape_nodes/exe_types/param_types/parameter_float.py,sha256=W_n4__XHOYppRD3-2RSLmxFcrcCBRex15oMyhShNyUU,6672
93
- griptape_nodes/exe_types/param_types/parameter_image.py,sha256=etYKDEgqPsTe9UUimqyRsiWDRXePT_iMXVc6-_VcLPU,9312
94
- griptape_nodes/exe_types/param_types/parameter_int.py,sha256=OmyuGeo6P4ZWxp1Ms9kQRhI2Ar-igDqUQPmH_0XtxUI,6821
95
- griptape_nodes/exe_types/param_types/parameter_number.py,sha256=tzACjVQos8nDCirQSxBPaDfDciigiA_OHgSKZW43gVA,15251
96
- griptape_nodes/exe_types/param_types/parameter_string.py,sha256=rcorJuT1QONU4c64--76oX9qVNqc7n3of6m257Xrk_0,9462
97
- griptape_nodes/exe_types/param_types/parameter_three_d.py,sha256=AJ8qID5HydYgx1Tj1HMgE7VBEHF4qvtibrQ8fWqVXKU,8272
98
- griptape_nodes/exe_types/param_types/parameter_video.py,sha256=iF74oKhDZ7VUZg8GO1y5dRAuQ8SQfbq0hMY2CkN6CoI,9333
90
+ griptape_nodes/exe_types/param_types/parameter_audio.py,sha256=m9C5bASK6lJFhYkhwly7q6pRWq1q0pc1wGh38nn3kGs,9419
91
+ griptape_nodes/exe_types/param_types/parameter_bool.py,sha256=mDbs4JW8dlEPvaR-u_tTKa6rzycF6KF5EPnezoQFufA,8100
92
+ griptape_nodes/exe_types/param_types/parameter_button.py,sha256=sFkl7jcQbFOMJk17UEZu0zj6wgAmZ9kfnCZCn_R7L9I,17177
93
+ griptape_nodes/exe_types/param_types/parameter_float.py,sha256=qjMTcMNzKkCLBBzlr2vdSweChXr-M-erSqqUVIU95tc,6678
94
+ griptape_nodes/exe_types/param_types/parameter_image.py,sha256=YldCdmmpL2jeJNRgwSrWavaMVtC0jXiIuO8Np49PTXs,9318
95
+ griptape_nodes/exe_types/param_types/parameter_int.py,sha256=fozMjPfBXL6AIQJ3E5rljloeYdw4ramqh6CU7jsrw24,6827
96
+ griptape_nodes/exe_types/param_types/parameter_number.py,sha256=NY3c1iKCNnIZ4BKXGykxmggzr4D9-9GZoZCwQxasp0s,15257
97
+ griptape_nodes/exe_types/param_types/parameter_string.py,sha256=8Mrx3Ktw12D78HNzfL19aoMtgUacxyYE9ZyNun8htcI,9468
98
+ griptape_nodes/exe_types/param_types/parameter_three_d.py,sha256=G8gf5v_hplzprC-jBPufgtwnpZiqsKlbYnsuwc3D_VI,8278
99
+ griptape_nodes/exe_types/param_types/parameter_video.py,sha256=MDjadF3WQIi8EiYAnT0ILOimKU0xIJTKu5HlqWKRE-I,9339
99
100
  griptape_nodes/exe_types/type_validator.py,sha256=RTz1vX09jzQpHhozITMJ0siOZUXvsERDhrApjdaM1WM,1120
100
101
  griptape_nodes/machines/__init__.py,sha256=v0jkwr-CFOLmfEYUQvX8BKQLOdvhSsA6toXkdHcPGUE,30
101
- griptape_nodes/machines/control_flow.py,sha256=01adLpKttW7wr7Gm5hHReWMamOerd7Dy-4VUPtwsqa8,22915
102
- griptape_nodes/machines/dag_builder.py,sha256=AAA_hH-Mz6GxJMUcVs6wHjKMarEsSyfNVs-PL1A_lOY,15486
103
- griptape_nodes/machines/fsm.py,sha256=WNo2w5c9Gbgzo5odcvbRT02EhCMFf3n3WYbZ0GYk1WI,2553
104
- griptape_nodes/machines/parallel_resolution.py,sha256=RXYkvHl8X6fKDtCmXkyfgOD-IyMUbecGYv4JyDmzetw,31741
105
- griptape_nodes/machines/sequential_resolution.py,sha256=BH3OHidXR2EBRAXEvBhwzVXciCt6rJLCDRWwGSz7Feg,19780
102
+ griptape_nodes/machines/control_flow.py,sha256=mmiA7OHXG3Nq36uFPKSGVgqm-ws-T21vzHgvF-um0hg,23007
103
+ griptape_nodes/machines/dag_builder.py,sha256=lWeonzrN-mk50B7laLGzX9a4QK8Yr2F1Ei_37d_D2NU,17978
104
+ griptape_nodes/machines/fsm.py,sha256=P1CZQl5smZy95UIKHVAEqaNQfqJzf7cheWiLT70tQOg,2768
105
+ griptape_nodes/machines/parallel_resolution.py,sha256=oYWx5XnzD4w4kJZhT9TqCXPH0C-jd3DniHyVccHtSQ8,32119
106
+ griptape_nodes/machines/sequential_resolution.py,sha256=Mk_EBmCRrGcl9k_lSTXrYIaXcjuRyMKslG5VPTh1mNc,21039
106
107
  griptape_nodes/mcp_server/__init__.py,sha256=GSpJWqE4lICaryhsQR1okeMH2x6j1bBL0HVxtr52WLg,42
107
108
  griptape_nodes/node_library/__init__.py,sha256=U3FcSdmq6UW7qt6E3Up3NWKvUEn5_5lqL-u5qbzfxMQ,28
108
109
  griptape_nodes/node_library/advanced_node_library.py,sha256=B1ZaxuFIzQ6tx_3MLIxlsHuahthEC1Hw_t6K_ByIdzs,2104
109
- griptape_nodes/node_library/library_registry.py,sha256=-DgqCt3vP7_4SxrgRVwtFqTHE7K-a_W9veJUyQcOXsU,14354
110
+ griptape_nodes/node_library/library_registry.py,sha256=siLAkVN3f56C2Ks7RwXnKGgKIYT_j8nZOOFUd3s6Zyo,15941
110
111
  griptape_nodes/node_library/workflow_registry.py,sha256=vRnZ6RSFRAf_XOOTrirLhrcmq8BK434XUdynNQ1gGMU,10523
111
112
  griptape_nodes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
113
  griptape_nodes/retained_mode/__init__.py,sha256=X12DKL6KhLsiRTPIlrPj2h76_sJ0q0eH4r0kMQkodm0,29
@@ -121,13 +122,13 @@ griptape_nodes/retained_mode/events/context_events.py,sha256=-FIwjI0hJodDhfM4BF-
121
122
  griptape_nodes/retained_mode/events/execution_events.py,sha256=AQHD04wxQXJDHGnw_ij4QvdUoiMckpMTZqZJX3ehGgA,13512
122
123
  griptape_nodes/retained_mode/events/flow_events.py,sha256=UcRHfaubb1GpDFSPg-5HRWrPnA7ifH1zBMYtWnYNy_E,19434
123
124
  griptape_nodes/retained_mode/events/generate_request_payload_schemas.py,sha256=PQ0QRZAUBljSIGjB8QhYUeRmSrfmLsJ6XVcygJKi13I,1102
124
- griptape_nodes/retained_mode/events/library_events.py,sha256=nVQ8qvK1JiuJTe7s_pmYXAuRTWJ55004WSrZJWhxag0,31413
125
+ griptape_nodes/retained_mode/events/library_events.py,sha256=Ke9B7pzhiJk_ctmZPJqilzHhZXByG4B2rArG6ec9KF4,36085
125
126
  griptape_nodes/retained_mode/events/logger_events.py,sha256=jYlxzPomgCsJuPtJ0znWBhD8QJfC8qC4xfChDiuVuyg,705
126
127
  griptape_nodes/retained_mode/events/mcp_events.py,sha256=51OlMZVcabdcIxBb_ojvrHtq2jAzZA31pooPBKaApyg,10734
127
128
  griptape_nodes/retained_mode/events/model_events.py,sha256=jXm-v-_Uxysn4MJ7a80_uIphrxTHgua3BGgHGyy3T_Y,9232
128
129
  griptape_nodes/retained_mode/events/node_events.py,sha256=vpILjBkgrPzF_KSow2EJCwcU-tDD78WEWM2DAAzhhiE,37720
129
130
  griptape_nodes/retained_mode/events/object_events.py,sha256=cJaqEU73Lzf1RRxJrFqEpl8eTr-gDhKpXKywJ-vVCJQ,2631
130
- griptape_nodes/retained_mode/events/os_events.py,sha256=v2uVt_s_AzP5y7CzczTuFh-onohkJZBNNldnKGVBdc4,22654
131
+ griptape_nodes/retained_mode/events/os_events.py,sha256=fVraPXCz48kDpCTttJFtsyfTfkaLSfTX57hexYSD7I8,23429
131
132
  griptape_nodes/retained_mode/events/parameter_events.py,sha256=2s3U_cc45LjSmq2pZyTEnjD6yAlc207wAYY633z4zO4,23938
132
133
  griptape_nodes/retained_mode/events/payload_registry.py,sha256=q-wxUqp63vhNj-Pl1JGJHnBkhUefcCArPoMN3KBREEI,1691
133
134
  griptape_nodes/retained_mode/events/project_events.py,sha256=C_jHk_7dRJLtbRgCi8IGe-mH46tueuTxLxGL7xxZVBI,17096
@@ -147,7 +148,7 @@ griptape_nodes/retained_mode/managers/context_manager.py,sha256=eb44_CAZhCg2iYIo
147
148
  griptape_nodes/retained_mode/managers/engine_identity_manager.py,sha256=-31364A03kU0YmAx3nM7nHdWfKnkej5Cawt_Plbwa68,10526
148
149
  griptape_nodes/retained_mode/managers/event_manager.py,sha256=v66GUmh5Knyxls-lB3TicsOxK535A7aZkmjDOIehbog,20537
149
150
  griptape_nodes/retained_mode/managers/fitness_problems/__init__.py,sha256=H_Wwfn1k_IaxwRxgbw3-seb1HWbcxl2Cvhw7wB7bCo8,75
150
- griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py,sha256=l_a0bpl136mtenxrTABuSTIvSETwkQ8Wo8u3iiX55WM,3222
151
+ griptape_nodes/retained_mode/managers/fitness_problems/libraries/__init__.py,sha256=vjyI8VUKNieAhlLlaxoUZZK9AxacdbajHVVFTPo_82A,3340
151
152
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/advanced_library_load_failure_problem.py,sha256=Z7bIE_Ll4qqsG-D_PLe48r3ZuUCChgk04mopDvZ5MD0,1215
152
153
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/after_library_callback_problem.py,sha256=sU5OAMp6hh4FLHAiSSAgSljnDFz30HXF0f62HMzSXRo,1147
153
154
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/before_library_callback_problem.py,sha256=CygA0CmIC68X4n6pG_xDogTS2wKu7myYW50zTJZaC64,1155
@@ -157,6 +158,7 @@ griptape_nodes/retained_mode/managers/fitness_problems/libraries/deprecated_node
157
158
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_library_problem.py,sha256=VklWc4mk3cY6QFEki0BhnQiPWUeYrSSJlUDCrk0Uyfg,1071
158
159
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/duplicate_node_registration_problem.py,sha256=Q8AoaEcdWriIuPvHdib5jYrHjRQrZExFcnwK3x5rllQ,1679
159
160
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/engine_version_error_problem.py,sha256=4muaR33dhNs980mBln3N-O2DXeSwH4DuNPbvEnfaQ1k,1033
161
+ griptape_nodes/retained_mode/managers/fitness_problems/libraries/incompatible_requirements_problem.py,sha256=N3Tvn1UIC5udyAbPSJuqveJZLfSjzJnswnoZSzEiI8g,1257
160
162
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/insufficient_disk_space_problem.py,sha256=wPdfxKHy0LDaqF-sgfXZPqVpr0R_RU5IvY1x9UEw2wk,1181
161
163
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/invalid_version_string_problem.py,sha256=Lv9cZHOtct7ypjvrNKanAHUrrAbgy0HWGNLBhADyOmk,1194
162
164
  griptape_nodes/retained_mode/managers/fitness_problems/libraries/library_json_decode_problem.py,sha256=yIC5Y6YcZ65ExvU1Ehkfhq_tU3yN96R0Igmd-C_HonI,983
@@ -195,26 +197,14 @@ griptape_nodes/retained_mode/managers/fitness_problems/workflows/node_type_not_f
195
197
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_not_found_problem.py,sha256=kPhaIeDxp0duxJBJLKFiYp269kEDsCx3uVLnkKbF2gk,895
196
198
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_problem.py,sha256=NLAoF_x7g5tL70qZtPVFI8xeM1jPZNsm7FKt9nkuGBc,542
197
199
  griptape_nodes/retained_mode/managers/fitness_problems/workflows/workflow_schema_version_problem.py,sha256=rUnbBBnGwgq5WTVPt2G4pGP3gVPoX5xvCdTkRPBmP04,1328
198
- griptape_nodes/retained_mode/managers/flow_manager.py,sha256=ZlyAn17u7n-t1jnMEFNurNrYyTuA3hohTSZ620ZfJbM,214040
199
- griptape_nodes/retained_mode/managers/library_lifecycle/__init__.py,sha256=Iq79VxTdETiExBfFWXceJggDZqS6X3OkzXE9XwFclVw,1340
200
- griptape_nodes/retained_mode/managers/library_lifecycle/data_models.py,sha256=fvAP0VaYGPHYl_Kg3RL4gdJlpqya8UTvpP-C49r950k,6723
201
- griptape_nodes/retained_mode/managers/library_lifecycle/library_directory.py,sha256=Ywno93eVJH4sAtQ1dgHG2Pw9B3vw8fN8oAL0gn_l6OI,14836
202
- griptape_nodes/retained_mode/managers/library_lifecycle/library_fsm.py,sha256=ZlX-FMhGxqafpLjHGftN3iV1r5LVxV9Qa6mWshBla8w,18669
203
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/__init__.py,sha256=X0SnqNuEtBVPvccfrUr_wBQQ9i5xJzcaWJLwFJTRRco,814
204
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/base.py,sha256=eVV6p9B-aQeaoDbA-c4s1MPpkKtESV7KS1Fxr2E9z4Q,2615
205
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/github.py,sha256=byMkJSJjboPJ2zvYamrBhYXL0292YPa3UBW7FsMpkfI,4308
206
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/local_file.py,sha256=Ck5-H3rw12ZvmMy8EXJKflx7N-4yR61pVcQ_YUxs6wg,16075
207
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/package.py,sha256=93frztMPWSprvn4vFZ9rEGLLQbkvw3oEmfyZxgCaxrQ,3752
208
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance/sandbox.py,sha256=XgG7whE74zWDxX1pOvhASW0pwjOei1EDLvIH19xdzT0,6117
209
- griptape_nodes/retained_mode/managers/library_lifecycle/library_provenance.py,sha256=cCGr-MQ1RlVBiUTZepYEKdVhPgC4ebcYrmpv8rI3VeM,894
210
- griptape_nodes/retained_mode/managers/library_lifecycle/library_status.py,sha256=K3UEBzAdCY9wphyBbLxDYP0Q43aYvhLZ_Pz7_SzcPec,443
211
- griptape_nodes/retained_mode/managers/library_manager.py,sha256=oU_K_rWR_77qJOTtOeKH_fZlsNLyymeSQchoe9QMbxQ,154471
200
+ griptape_nodes/retained_mode/managers/flow_manager.py,sha256=0Z8hNjfwlnJgQGOsQf3MEvQnkPLeQBXe2ZuixUov2QY,220137
201
+ griptape_nodes/retained_mode/managers/library_manager.py,sha256=vNIwBweMIO84gJp05M_vBFYW2JjTyCpQa4G62ACsBP4,191730
212
202
  griptape_nodes/retained_mode/managers/mcp_manager.py,sha256=Ezmn5_48r4JWYe-tFGqmw9dXLvvTiO1rw9b4MNCkw0U,15955
213
203
  griptape_nodes/retained_mode/managers/model_manager.py,sha256=3lj2X8vIvDSERPtR2VEXNFEWy_D8H6muxRvD-PEx8U8,44845
214
- griptape_nodes/retained_mode/managers/node_manager.py,sha256=hLNiGnrzd1W_v3GBzfVrr6SNkKKQk6vbVgLaUIW1heQ,214936
204
+ griptape_nodes/retained_mode/managers/node_manager.py,sha256=LVF7_KCb01mJ_fAaCfg_9D0Rw40KKxRSr3n3nsRg8Ss,215328
215
205
  griptape_nodes/retained_mode/managers/object_manager.py,sha256=xABsjpE1_HLEIFwYj60zDOLi18EqrYUBuNaj37lUcH4,12921
216
206
  griptape_nodes/retained_mode/managers/operation_manager.py,sha256=4Vn_79vHrawy3wJVUx52tfblO4mURww58nb5RtCTpKU,20190
217
- griptape_nodes/retained_mode/managers/os_manager.py,sha256=aI-e4orc809Qz5lSpqP01_pVlKJvyxcmsGKLQn6rKpQ,124758
207
+ griptape_nodes/retained_mode/managers/os_manager.py,sha256=Ttgj6R063p2Yf1lcdeSTB2xOTg94MIDCMPxO8FDczEQ,142397
218
208
  griptape_nodes/retained_mode/managers/project_manager.py,sha256=-K-anrxEVKInFMPLY-cV3ipqEh8hMELGHKbecJJJVa8,49035
219
209
  griptape_nodes/retained_mode/managers/resource_components/__init__.py,sha256=2FHpZFw2N1-oHfMCfrnB_XpF8_-2aSNtAZWh5zQTGL0,35
220
210
  griptape_nodes/retained_mode/managers/resource_components/capability_field.py,sha256=jZ5ONfdYVd5_MKlSKvUch1X2n1oHzMSeZW8UZ1a_RsU,1504
@@ -223,16 +213,17 @@ griptape_nodes/retained_mode/managers/resource_components/resource_instance.py,s
223
213
  griptape_nodes/retained_mode/managers/resource_components/resource_type.py,sha256=yWwI3K1oIzVqpSRpkoUDsBsY6Zhgj2THKLXzdqy7u0c,3355
224
214
  griptape_nodes/retained_mode/managers/resource_manager.py,sha256=c1JETPMseisT1zu98W7F7KWoTPgAQvlu19RFxmv_IiI,15066
225
215
  griptape_nodes/retained_mode/managers/resource_types/__init__.py,sha256=ganDZJriNgrxvLPs45X48XpLK8ifzljVpD95xeCPzO8,80
216
+ griptape_nodes/retained_mode/managers/resource_types/compute_resource.py,sha256=Oot0jevd6XGIxmP_SKmjGKJ5SyXZO_GLdsuc2jBcYV8,2951
226
217
  griptape_nodes/retained_mode/managers/resource_types/cpu_resource.py,sha256=YHjU6_Pm41wGvdMlRzNkQS9yJY8wD2NN2-WwOFpVpUo,3830
227
- griptape_nodes/retained_mode/managers/resource_types/os_resource.py,sha256=ImgkOQI_br4yI3EY777D93NR20al8b4q9IocqWESjkw,3082
218
+ griptape_nodes/retained_mode/managers/resource_types/os_resource.py,sha256=HHJ-kgZB2BsnvU0rp-CQlM1xTJm3OZ3Dh-NpB01gGG8,3439
228
219
  griptape_nodes/retained_mode/managers/secrets_manager.py,sha256=knoHlbR-VrkeNULYjq72cHnhbCeupkKjtUT0EfBH8LQ,7743
229
220
  griptape_nodes/retained_mode/managers/session_manager.py,sha256=u3OEir9rjwG7GFM4MA5crKwcwq6F-lCUKlFzxlFU4co,14085
230
221
  griptape_nodes/retained_mode/managers/settings.py,sha256=BnIOYxsaE834_oIg6C_oRqFz0MDv8qSqLtwEGpiJZvA,12054
231
- griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=qQLOwugzqWoz2fzmOpXldU8U33R_WXQ8i4trIKodKv8,11494
222
+ griptape_nodes/retained_mode/managers/static_files_manager.py,sha256=rWeI5mO8CCdEHx1odo4z4pxfTy33ggzCcUwkRj67aNM,12408
232
223
  griptape_nodes/retained_mode/managers/sync_manager.py,sha256=dF6nAAy1DLDQydefx7v3EtPCBiCrk4vURMum57WfmK8,21448
233
224
  griptape_nodes/retained_mode/managers/user_manager.py,sha256=JAOOKDhUfIbj0CJ5EHRBcplmxheQTzeogbvGO23VqXQ,4508
234
225
  griptape_nodes/retained_mode/managers/variable_manager.py,sha256=TnuqHSRK9Yiu_EtKxQksF9SyyQb72lbFQuTQZdpBxeE,24116
235
- griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=P7mW_XD0Cbxw-vlRoi6pQ9cG7hUX_CLJS9p5M1JytHQ,17025
226
+ griptape_nodes/retained_mode/managers/version_compatibility_manager.py,sha256=kaCtmNMqJW-mvLCFHf77wbBZbc3CgW2h8fYYkLkNrPs,17041
236
227
  griptape_nodes/retained_mode/managers/workflow_manager.py,sha256=VCOV0BfkW9ynLhmH7jRvcEJnFr6YiAF0f76sc9wCjBg,215471
237
228
  griptape_nodes/retained_mode/retained_mode.py,sha256=dG8FFpLXSxT49naOcphEq2aSRCEVoQyklWgaDljjuDA,71728
238
229
  griptape_nodes/retained_mode/utils/__init__.py,sha256=W5dvv8YwvVVq_8eVTgMd3Z_VB_Dtq1sIIVq8745QH_I,52
@@ -262,7 +253,7 @@ griptape_nodes/utils/__init__.py,sha256=kzDZW_VPyxWJFonM3kYTl7A91_JmtHPK0Io4KPLT
262
253
  griptape_nodes/utils/async_utils.py,sha256=4IrW8Ub8iJ2QB9yguZtfN1EB9B5nXHS7jbDaLOHWso0,4844
263
254
  griptape_nodes/utils/dict_utils.py,sha256=1VP2EoyOP0nswoAgjPehpA0izpkygWRX7L--ArN6LV8,7314
264
255
  griptape_nodes/utils/file_utils.py,sha256=Lj1SQH8XyuJx3WoHmWhyZf2gHPirZ0ZpQtPPcuP-ONQ,3288
265
- griptape_nodes/utils/git_utils.py,sha256=J25Z3_Kh567oRd4enjHDF9GbRnpuO1U7irHfrDkqqQs,45388
256
+ griptape_nodes/utils/git_utils.py,sha256=hcrancOlWO1qtq93NA1O7sPc_joaHff41z-7JKH6IdQ,44539
266
257
  griptape_nodes/utils/huggingface_utils.py,sha256=txR5XS_01W3TvsH4SQ3AJrFy8oS8Ah9M-ePRSs3jHYA,4737
267
258
  griptape_nodes/utils/image_preview.py,sha256=NhYIqohRF9vbFpWIEvZHdPLLPK_JdUBvC4RvNAsSa1w,4480
268
259
  griptape_nodes/utils/library_utils.py,sha256=UwTdOJcPwJljWYD-DbctjExicaw-6isXZ-Js02jrGCw,4224
@@ -272,12 +263,16 @@ griptape_nodes/utils/version_utils.py,sha256=Y-HJfJW6Jxuz_jOnHxMiy-pmMauHRnY-7BO
272
263
  griptape_nodes/version_compatibility/__init__.py,sha256=JMz1sB7Zsj6pS1S5sdsPR0kn89s1A0sB0kFIvygJYfo,74
273
264
  griptape_nodes/version_compatibility/versions/__init__.py,sha256=PWSxM28LPUdBdRPA98j4RUWvuZ4NqfX1day2VU6SqPw,74
274
265
  griptape_nodes/version_compatibility/versions/v0_39_0/__init__.py,sha256=21iKlFpsmBW4WsAexSD0WMAJnsYmMq2sIbDeYC831fc,62
275
- griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=ry9R4qrt9Mjs9CLQ9jSgiYO6k9AfIsN0rb0MZM7EXzs,3960
266
+ griptape_nodes/version_compatibility/versions/v0_39_0/modified_parameters_set_removal.py,sha256=KPTNQ2kl0WzEN-p83o4xGYMTvexwHDPp2wgympUVh00,4008
276
267
  griptape_nodes/version_compatibility/versions/v0_63_8/__init__.py,sha256=1VJswR2DcJko5y1TztzPuZRfXALG4S1MxmgAQnkKGHE,53
277
268
  griptape_nodes/version_compatibility/versions/v0_63_8/deprecated_nodegroup_parameters.py,sha256=MqrmFszysezVEqsrGXrAK7VKjkVaxUtkpHysg15MDeM,4401
269
+ griptape_nodes/version_compatibility/versions/v0_65_4/__init__.py,sha256=s0JltT_C0Odg9WH9WVPwPwhBaNFCa6r_hrbY3sgr6XE,212
270
+ griptape_nodes/version_compatibility/versions/v0_65_4/run_in_parallel_to_run_in_order.py,sha256=CLuPiN82dbxlYKVkIAIYJElo0_5PUbCQwK3AbflWuGQ,3051
271
+ griptape_nodes/version_compatibility/versions/v0_65_5/__init__.py,sha256=4UyspOVIbFcxXPbvR3Ejc5ojyKDjRSHc5lzRjXq-t5M,187
272
+ griptape_nodes/version_compatibility/versions/v0_65_5/flux_2_removed_parameters.py,sha256=jOlmY5kKHXh8HPzAUtvwMJqzD4bP7pkE--yHUb7jTRA,3305
278
273
  griptape_nodes/version_compatibility/versions/v0_7_0/__init__.py,sha256=IzPPmGK86h2swfGGTOHyVcBIlOng6SjgWQzlbf3ngmo,51
279
274
  griptape_nodes/version_compatibility/versions/v0_7_0/local_executor_argument_addition.py,sha256=Thx8acnbw5OychhwEEj9aFxvbPe7Wgn4V9ZmZ7KRZqc,2082
280
- griptape_nodes-0.65.6.dist-info/WHEEL,sha256=ZyFSCYkV2BrxH6-HRVRg3R9Fo7MALzer9KiPYqNxSbo,79
281
- griptape_nodes-0.65.6.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
282
- griptape_nodes-0.65.6.dist-info/METADATA,sha256=F5feLpbXZiK3FXpKvy72L-rAAIGguJs8_NzvRmyWUes,5374
283
- griptape_nodes-0.65.6.dist-info/RECORD,,
275
+ griptape_nodes-0.66.0.dist-info/WHEEL,sha256=ZyFSCYkV2BrxH6-HRVRg3R9Fo7MALzer9KiPYqNxSbo,79
276
+ griptape_nodes-0.66.0.dist-info/entry_points.txt,sha256=qvevqd3BVbAV5TcantnAm0ouqaqYKhsRO3pkFymWLWM,82
277
+ griptape_nodes-0.66.0.dist-info/METADATA,sha256=CV4bNiOA9DIMnFYmEp3FVBOPdpmmkwarQcH68JaO2qQ,5374
278
+ griptape_nodes-0.66.0.dist-info/RECORD,,
@@ -1,45 +0,0 @@
1
- """Library lifecycle management subsystem."""
2
-
3
- from griptape_nodes.retained_mode.managers.library_lifecycle.data_models import (
4
- EvaluationResult,
5
- InspectionResult,
6
- InstallationResult,
7
- LibraryByType,
8
- LibraryEntry,
9
- LibraryLoadedResult,
10
- LibraryPreferences,
11
- LifecycleIssue,
12
- )
13
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_directory import LibraryDirectory
14
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_fsm import (
15
- LibraryLifecycleContext,
16
- LibraryLifecycleFSM,
17
- )
18
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_provenance import (
19
- LibraryProvenance,
20
- LibraryProvenanceGitHub,
21
- LibraryProvenanceLocalFile,
22
- LibraryProvenancePackage,
23
- LibraryProvenanceSandbox,
24
- )
25
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_status import LibraryStatus
26
-
27
- __all__ = [
28
- "EvaluationResult",
29
- "InspectionResult",
30
- "InstallationResult",
31
- "LibraryByType",
32
- "LibraryDirectory",
33
- "LibraryEntry",
34
- "LibraryLifecycleContext",
35
- "LibraryLifecycleFSM",
36
- "LibraryLoadedResult",
37
- "LibraryPreferences",
38
- "LibraryProvenance",
39
- "LibraryProvenanceGitHub",
40
- "LibraryProvenanceLocalFile",
41
- "LibraryProvenancePackage",
42
- "LibraryProvenanceSandbox",
43
- "LibraryStatus",
44
- "LifecycleIssue",
45
- ]
@@ -1,191 +0,0 @@
1
- """Data models for library lifecycle management."""
2
-
3
- from __future__ import annotations
4
-
5
- from dataclasses import dataclass, field
6
- from typing import TYPE_CHECKING, NamedTuple
7
-
8
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_status import LibraryStatus
9
-
10
- if TYPE_CHECKING:
11
- from griptape_nodes.node_library.library_registry import LibrarySchema
12
- from griptape_nodes.retained_mode.managers.library_lifecycle.library_provenance import LibraryProvenance
13
-
14
-
15
- class LibraryByType(NamedTuple):
16
- """A library entry with its name, organized by provenance type."""
17
-
18
- name: str
19
- entry: LibraryEntry
20
-
21
-
22
- class LibraryCandidate(NamedTuple):
23
- """A library candidate with its provenance and entry."""
24
-
25
- provenance: LibraryProvenance
26
- entry: LibraryEntry
27
-
28
-
29
- @dataclass
30
- class LifecycleIssue:
31
- """Represents an issue found during library lifecycle with severity level."""
32
-
33
- message: str
34
- severity: LibraryStatus
35
-
36
-
37
- @dataclass
38
- class Result:
39
- """Base class for all library lifecycle result objects."""
40
-
41
- issues: list[LifecycleIssue] = field(default_factory=list)
42
-
43
- def get_status(self) -> LibraryStatus:
44
- """Determine overall status based on issues."""
45
- if any(issue.severity == LibraryStatus.UNUSABLE for issue in self.issues):
46
- return LibraryStatus.UNUSABLE
47
- if any(issue.severity == LibraryStatus.FLAWED for issue in self.issues):
48
- return LibraryStatus.FLAWED
49
- return LibraryStatus.GOOD
50
-
51
- def is_usable(self) -> bool:
52
- """Check if result is usable despite issues."""
53
- return self.get_status() in [LibraryStatus.GOOD, LibraryStatus.FLAWED]
54
-
55
-
56
- @dataclass
57
- class InspectionResult(Result):
58
- """Result of library inspection with structured issues and severity levels."""
59
-
60
- schema: LibrarySchema | None = None
61
-
62
- def __init__(self, schema: LibrarySchema | None = None, issues: list[LifecycleIssue] | None = None):
63
- super().__init__(issues=issues or [])
64
- self.schema = schema
65
-
66
- def get_status(self) -> LibraryStatus:
67
- """Determine overall status based on issues and schema availability."""
68
- if not self.schema:
69
- return LibraryStatus.UNUSABLE
70
- return super().get_status()
71
-
72
-
73
- @dataclass
74
- class EvaluationResult(Result):
75
- """Result of library evaluation with structured issues and severity levels."""
76
-
77
- def __init__(self, issues: list[LifecycleIssue] | None = None):
78
- super().__init__(issues=issues or [])
79
-
80
-
81
- @dataclass
82
- class InstallationResult(Result):
83
- """Result of library installation with structured issues and severity levels."""
84
-
85
- installation_path: str = "" # Where the library files are
86
- venv_path: str = "" # Where the virtual environment is
87
-
88
- def __init__(self, installation_path: str = "", venv_path: str = "", issues: list[LifecycleIssue] | None = None):
89
- super().__init__(issues=issues or [])
90
- self.installation_path = installation_path
91
- self.venv_path = venv_path
92
-
93
-
94
- @dataclass
95
- class LibraryLoadedResult(Result):
96
- """Result of library loading with structured issues and severity levels."""
97
-
98
- def __init__(self, issues: list[LifecycleIssue] | None = None):
99
- super().__init__(issues=issues or [])
100
-
101
-
102
- @dataclass
103
- class LibraryEntry:
104
- """A library entry combining provenance and user configuration."""
105
-
106
- # Abstract base - concrete implementations in library_provenance.py
107
- active: bool = True
108
- library_name: str | None = None # Set after inspection from metadata
109
-
110
- def get_provenance(self) -> LibraryProvenance:
111
- """Get the provenance for this library entry."""
112
- msg = "Subclasses must implement get_provenance()"
113
- raise NotImplementedError(msg)
114
-
115
- def set_library_name(self, name: str) -> None:
116
- """Set the library name after inspection."""
117
- self.library_name = name
118
-
119
-
120
- @dataclass
121
- class LibraryPreferences:
122
- """User preferences and configuration for libraries."""
123
-
124
- libraries: dict[str, LibraryEntry] = field(default_factory=dict)
125
-
126
- def add_library(self, name: str, library_entry: LibraryEntry) -> None:
127
- """Add or update a library entry."""
128
- library_entry.set_library_name(name)
129
- self.libraries[name] = library_entry
130
-
131
- def add_inspected_library(self, library_entry: LibraryEntry) -> str | None:
132
- """Add a library entry that has been inspected and has a library name.
133
-
134
- Returns the final library name used, or None if there was a conflict.
135
- """
136
- if not library_entry.library_name:
137
- msg = "Library entry must have a library_name set after inspection"
138
- raise ValueError(msg)
139
-
140
- library_name = library_entry.library_name
141
-
142
- # Check for conflicts
143
- if library_name in self.libraries:
144
- # Library name already exists - this is a conflict
145
- existing_entry = self.libraries[library_name]
146
- if existing_entry.get_provenance() != library_entry.get_provenance():
147
- # Different provenance with same name - this is a real conflict
148
- return None
149
-
150
- # No conflict, add the library
151
- self.libraries[library_name] = library_entry
152
- return library_name
153
-
154
- def has_library_entry(self, name: str) -> bool:
155
- """Check if a library entry exists."""
156
- return name in self.libraries
157
-
158
- def get_library_entry(self, name: str) -> LibraryEntry:
159
- """Get the library entry for a library."""
160
- if name not in self.libraries:
161
- msg = f"Library {name} not found in preferences"
162
- raise KeyError(msg)
163
- return self.libraries[name]
164
-
165
- def get_all_library_names(self) -> list[str]:
166
- """Get all library names in preferences."""
167
- return list(self.libraries.keys())
168
-
169
- def remove_library(self, name: str) -> None:
170
- """Remove a library from preferences."""
171
- self.libraries.pop(name, None)
172
-
173
- def get_libraries_by_type(self, provenance_type: type) -> list[LibraryByType]:
174
- """Get all libraries that have a specific provenance type."""
175
- matching_libraries = []
176
-
177
- for name, entry in self.libraries.items():
178
- if isinstance(entry.get_provenance(), provenance_type):
179
- matching_libraries.append(LibraryByType(name=name, entry=entry))
180
-
181
- return matching_libraries
182
-
183
- def get_libraries_by_provenance(self, provenance: LibraryProvenance) -> list[LibraryByType]:
184
- """Get all libraries that have a specific provenance."""
185
- matching_libraries = []
186
-
187
- for name, entry in self.libraries.items():
188
- if entry.get_provenance() == provenance:
189
- matching_libraries.append(LibraryByType(name=name, entry=entry))
190
-
191
- return matching_libraries