setta 0.0.14.dev4__tar.gz → 0.0.14.dev6__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 (268) hide show
  1. {setta-0.0.14.dev4/backend/setta.egg-info → setta-0.0.14.dev6}/PKG-INFO +1 -1
  2. setta-0.0.14.dev6/backend/setta/__init__.py +1 -0
  3. setta-0.0.14.dev6/backend/setta/tasks/task_runner.py +41 -0
  4. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/tasks.py +53 -22
  5. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/utils.py +55 -20
  6. {setta-0.0.14.dev4 → setta-0.0.14.dev6/backend/setta.egg-info}/PKG-INFO +1 -1
  7. setta-0.0.14.dev4/backend/setta/__init__.py +0 -1
  8. setta-0.0.14.dev4/backend/setta/tasks/task_runner.py +0 -29
  9. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/LICENSE +0 -0
  10. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/MANIFEST.in +0 -0
  11. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/README.md +0 -0
  12. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/cli/__init__.py +0 -0
  13. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/cli/connect.py +0 -0
  14. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/cli/logger.py +0 -0
  15. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/__init__.py +0 -0
  16. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/create_runnable_scripts.py +0 -0
  17. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/export_selected.py +0 -0
  18. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/find_placeholders.py +0 -0
  19. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/__init__.py +0 -0
  20. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/ast_utils.py +0 -0
  21. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/check_scope.py +0 -0
  22. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/generate_code.py +0 -0
  23. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/make_parseable.py +0 -0
  24. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/position_line_col.py +0 -0
  25. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/python/validate_imports.py +0 -0
  26. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/utils.py +0 -0
  27. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/yaml/__init__.py +0 -0
  28. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/yaml/generate_yaml.py +0 -0
  29. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/code_gen/yaml/section_dict.py +0 -0
  30. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/__init__.py +0 -0
  31. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/backup.py +0 -0
  32. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/__init__.py +0 -0
  33. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/artifacts/__init__.py +0 -0
  34. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/artifacts/load.py +0 -0
  35. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/artifacts/save.py +0 -0
  36. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/artifacts/save_or_create.py +0 -0
  37. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/artifacts/utils.py +0 -0
  38. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/codeInfo/__init__.py +0 -0
  39. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/codeInfo/copy.py +0 -0
  40. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/codeInfo/load.py +0 -0
  41. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/codeInfo/save.py +0 -0
  42. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/codeInfo/utils.py +0 -0
  43. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/evRefs/__init__.py +0 -0
  44. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/evRefs/load.py +0 -0
  45. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/evRefs/save.py +0 -0
  46. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/__init__.py +0 -0
  47. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/copy.py +0 -0
  48. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/delete.py +0 -0
  49. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/load.py +0 -0
  50. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/save.py +0 -0
  51. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/saveAs.py +0 -0
  52. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/projects/utils.py +0 -0
  53. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sectionVariants/__init__.py +0 -0
  54. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sectionVariants/copy.py +0 -0
  55. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sectionVariants/load.py +0 -0
  56. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sectionVariants/save.py +0 -0
  57. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sectionVariants/utils.py +0 -0
  58. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/__init__.py +0 -0
  59. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/copy.py +0 -0
  60. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/jsonSource.py +0 -0
  61. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/load.py +0 -0
  62. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/save.py +0 -0
  63. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/sections/utils.py +0 -0
  64. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/uiTypes/__init__.py +0 -0
  65. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/uiTypes/copy.py +0 -0
  66. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/uiTypes/load.py +0 -0
  67. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/uiTypes/save.py +0 -0
  68. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db/uiTypes/utils.py +0 -0
  69. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db_init.py +0 -0
  70. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/db_objs.py +0 -0
  71. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/export_db/__init__.py +0 -0
  72. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/export_db/export_db.py +0 -0
  73. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/export_db/export_raw.py +0 -0
  74. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/export_db/export_readable.py +0 -0
  75. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/export_db/utils.py +0 -0
  76. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/import_db.py +0 -0
  77. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/seed.py +0 -0
  78. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/settings_file.py +0 -0
  79. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/database/utils.py +0 -0
  80. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/__init__.py +0 -0
  81. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/file_watcher.py +0 -0
  82. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader.py +0 -0
  83. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/__init__.py +0 -0
  84. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/completion.py +0 -0
  85. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/definition.py +0 -0
  86. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/diagnostics.py +0 -0
  87. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/documentHighlight.py +0 -0
  88. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/references.py +0 -0
  89. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/reader_fns/signatureHelp.py +0 -0
  90. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/server.py +0 -0
  91. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/specific_file_watcher.py +0 -0
  92. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/utils.py +0 -0
  93. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/lsp/writer.py +0 -0
  94. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/__init__.py +0 -0
  95. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/artifact.py +0 -0
  96. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/code_info.py +0 -0
  97. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/dependencies.py +0 -0
  98. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/in_memory_fn_stdout_websocket.py +0 -0
  99. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/interactive.py +0 -0
  100. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/lsp.py +0 -0
  101. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/projects.py +0 -0
  102. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/reference_renaming.py +0 -0
  103. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/sections.py +0 -0
  104. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/settings.py +0 -0
  105. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/terminals.py +0 -0
  106. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/routers/websocket.py +0 -0
  107. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/server.py +0 -0
  108. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/start.py +0 -0
  109. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/BaseUITypes.json +0 -0
  110. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/Settings.json +0 -0
  111. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/constants.json +0 -0
  112. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/db_init.sql +0 -0
  113. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/defaultValues.json +0 -0
  114. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/constants/settingsProject.json +0 -0
  115. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/android-chrome-192x192.png +0 -0
  116. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/android-chrome-512x512.png +0 -0
  117. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/apple-touch-icon.png +0 -0
  118. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  119. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  120. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  121. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  122. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  123. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  124. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  125. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  126. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  127. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  128. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  129. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  130. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  131. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  132. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  133. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  134. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  135. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  136. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  137. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  138. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  139. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  140. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  141. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  142. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  143. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  144. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  145. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  146. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  147. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  148. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  149. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  150. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  151. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  152. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  153. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  154. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  155. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  156. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  157. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  158. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  159. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  160. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  161. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  162. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  163. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  164. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  165. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  166. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  167. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  168. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  169. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  170. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  171. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  172. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  173. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  174. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  175. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  176. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  177. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-all-700-italic-D-4m7eF5.woff +0 -0
  178. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-cyrillic-700-italic-C21vCyEA.woff2 +0 -0
  179. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-cyrillic-ext-700-italic-gsr366qd.woff2 +0 -0
  180. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-latin-700-italic-BQbwEFjx.woff2 +0 -0
  181. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-latin-ext-700-italic-DnnS5iSC.woff2 +0 -0
  182. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/cormorant-garamond-vietnamese-700-italic-2_nTgjbG.woff2 +0 -0
  183. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/index-B8656WgG.js +0 -0
  184. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/index-DQjclEVk.css +0 -0
  185. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-all-400-normal-ByZ5TkcW.woff +0 -0
  186. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-all-600-normal-BQl_S1BW.woff +0 -0
  187. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-all-800-normal-BdAoPad8.woff +0 -0
  188. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-400-normal-BdCE3qi6.woff2 +0 -0
  189. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-600-normal-7XOpjHIA.woff2 +0 -0
  190. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-800-normal-DGhuWe7d.woff2 +0 -0
  191. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-ext-400-normal-BWPw_Wqo.woff2 +0 -0
  192. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-ext-600-normal-ejcnWb4M.woff2 +0 -0
  193. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-cyrillic-ext-800-normal-DBv1a6vS.woff2 +0 -0
  194. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-400-normal-B1y6FevT.woff2 +0 -0
  195. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-600-normal-C2fO7_LG.woff2 +0 -0
  196. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-800-normal-Cmzsyk9X.woff2 +0 -0
  197. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-ext-400-normal-CDYjSWzV.woff2 +0 -0
  198. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-ext-600-normal-aFl-DVOe.woff2 +0 -0
  199. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-greek-ext-800-normal-BDfRYppl.woff2 +0 -0
  200. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-400-normal-C0b7ZYuD.woff2 +0 -0
  201. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-600-normal-Do_HpvrI.woff2 +0 -0
  202. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-800-normal-4xo3UuPr.woff2 +0 -0
  203. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-ext-400-normal-CoAAiu5e.woff2 +0 -0
  204. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-ext-600-normal-Dc00Iig3.woff2 +0 -0
  205. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/inter-latin-ext-800-normal-MtSFSlwC.woff2 +0 -0
  206. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/logo/logo.svg +0 -0
  207. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-all-500-normal-r3XLtphf.woff +0 -0
  208. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-cyrillic-500-normal-CY1ydVwz.woff2 +0 -0
  209. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-cyrillic-ext-500-normal-CfYAfiCF.woff2 +0 -0
  210. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-greek-500-normal-CAXYj0Fh.woff2 +0 -0
  211. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-latin-500-normal-D9gpC5Cq.woff2 +0 -0
  212. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/source-code-pro-latin-ext-500-normal-CRAmHsi-.woff2 +0 -0
  213. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-all-400-normal-DjvUmtn7.woff +0 -0
  214. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-all-500-normal-xIKbAjND.woff +0 -0
  215. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-all-600-normal-G3qI_FYS.woff +0 -0
  216. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-all-700-normal-DDAKfh8R.woff +0 -0
  217. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-400-normal-DiMJuv0g.woff2 +0 -0
  218. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-500-normal-Bj5Gxvqh.woff2 +0 -0
  219. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-600-normal-DqkZaPuW.woff2 +0 -0
  220. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-700-normal-DrOaUiEE.woff2 +0 -0
  221. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-ext-400-normal-DVtzt6WA.woff2 +0 -0
  222. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-ext-500-normal-Ci3LVpiW.woff2 +0 -0
  223. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-ext-600-normal-BROvLH43.woff2 +0 -0
  224. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/assets/work-sans-latin-ext-700-normal-qcgZR4tS.woff2 +0 -0
  225. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/browserconfig.xml +0 -0
  226. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/favicon-16x16.png +0 -0
  227. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/favicon-32x32.png +0 -0
  228. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/favicon.ico +0 -0
  229. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/index.html +0 -0
  230. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/manifest.json +0 -0
  231. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/mstile-144x144.png +0 -0
  232. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/mstile-150x150.png +0 -0
  233. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/mstile-310x150.png +0 -0
  234. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/mstile-310x310.png +0 -0
  235. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/mstile-70x70.png +0 -0
  236. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/robots.txt +0 -0
  237. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/safari-pinned-tab.svg +0 -0
  238. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/frontend/site.webmanifest +0 -0
  239. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/seed/.DS_Store +0 -0
  240. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/static/seed/examples/.DS_Store +0 -0
  241. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/__init__.py +0 -0
  242. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/__init__.py +0 -0
  243. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/codeAreaAutocomplete.py +0 -0
  244. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/codeAreaFindTemplateVars.py +0 -0
  245. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/codeAreaInitializeCode.py +0 -0
  246. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/findEVRefs.py +0 -0
  247. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/parametersRequest.py +0 -0
  248. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/textFieldAutocomplete.py +0 -0
  249. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/textFieldInitializeCode.py +0 -0
  250. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/typeCheck.py +0 -0
  251. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/tasks/fns/utils.py +0 -0
  252. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/terminals/__init__.py +0 -0
  253. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/terminals/terminals.py +0 -0
  254. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/terminals/utils.py +0 -0
  255. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/__init__.py +0 -0
  256. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/constants.py +0 -0
  257. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/generate_memorable_string.py +0 -0
  258. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/generate_new_filename.py +0 -0
  259. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/section_contents.py +0 -0
  260. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/utils.py +0 -0
  261. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta/utils/websocket_manager.py +0 -0
  262. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta.egg-info/SOURCES.txt +0 -0
  263. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta.egg-info/dependency_links.txt +0 -0
  264. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta.egg-info/entry_points.txt +0 -0
  265. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta.egg-info/requires.txt +0 -0
  266. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/backend/setta.egg-info/top_level.txt +0 -0
  267. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/pyproject.toml +0 -0
  268. {setta-0.0.14.dev4 → setta-0.0.14.dev6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: setta
3
- Version: 0.0.14.dev4
3
+ Version: 0.0.14.dev6
4
4
  Summary: Python without the donkeywork.
5
5
  Home-page: https://setta.dev
6
6
  Author: Kevin Musgrave, Jeff Musgrave
@@ -0,0 +1 @@
1
+ __version__ = "0.0.14.dev6"
@@ -0,0 +1,41 @@
1
+ import asyncio
2
+ import inspect
3
+ import logging
4
+ import traceback
5
+ from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
6
+ from enum import Enum
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+
11
+ class RunType(Enum):
12
+ SUBPROCESS = "SUBPROCESS"
13
+ THREAD = "THREAD"
14
+ NONE = "NONE"
15
+
16
+
17
+ class TaskRunner:
18
+ def __init__(self):
19
+ self.thread_executor = ThreadPoolExecutor(max_workers=2)
20
+ self.process_executor = ProcessPoolExecutor(max_workers=2)
21
+
22
+ async def run(self, fn, fn_args, run_as):
23
+ logger.debug(f"TaskRunner running function {fn.__name__} with run_as={run_as}")
24
+ try:
25
+ if inspect.iscoroutinefunction(fn):
26
+ return await fn(*fn_args)
27
+
28
+ if run_as == RunType.NONE:
29
+ return fn(*fn_args)
30
+ elif run_as == RunType.THREAD:
31
+ executor = self.thread_executor
32
+ elif run_as == RunType.SUBPROCESS:
33
+ executor = self.process_executor
34
+
35
+ return await asyncio.get_running_loop().run_in_executor(
36
+ executor, fn, *fn_args
37
+ )
38
+ except Exception as e:
39
+ logger.error(f"Error in TaskRunner.run: {str(e)}")
40
+ traceback.print_exc()
41
+ raise
@@ -3,6 +3,7 @@ import copy
3
3
  import json
4
4
  import logging
5
5
  import time
6
+ import traceback
6
7
  from typing import Dict
7
8
 
8
9
  from setta.database.utils import create_new_id
@@ -87,15 +88,25 @@ class Tasks:
87
88
  or None in fnInfo["dependencies"]
88
89
  or any(k in fnInfo["dependencies"] for k in message.content.keys())
89
90
  ):
90
- # Send message to subprocess
91
- sp_info["subprocess"].parent_conn.send(
92
- {
93
- "type": call_type,
94
- "fn_name": fn_name,
95
- "message": message,
96
- "other_data": other_data,
97
- }
91
+ logger.debug(
92
+ f"Sending message to subprocess {sp_key}, function {fn_name}, message type: {call_type}"
98
93
  )
94
+ try:
95
+ # Send message to subprocess
96
+ sp_info["subprocess"].parent_conn.send(
97
+ {
98
+ "type": call_type,
99
+ "fn_name": fn_name,
100
+ "message": message,
101
+ "other_data": other_data,
102
+ }
103
+ )
104
+ except Exception as e:
105
+ logger.error(
106
+ f"Error sending message to subprocess {sp_key}: {str(e)}"
107
+ )
108
+ traceback.print_exc()
109
+ continue # Skip to next function if we can't send
99
110
 
100
111
  # Create task for receiving response
101
112
  task = asyncio.create_task(
@@ -127,23 +138,43 @@ class Tasks:
127
138
  self, subprocess_key, fn_name, msg_id, recv_fn, websocket_manager, results
128
139
  ):
129
140
  # Run the receive function in a thread
141
+ logger.debug(
142
+ f"Waiting for response from subprocess {subprocess_key}, function {fn_name}"
143
+ )
130
144
  start_time = time.perf_counter()
131
- result = await self.task_runner.run(recv_fn, [], RunType.THREAD)
132
- elapsed_time = time.perf_counter() - start_time
133
- if result["status"] == "success":
134
- self.update_average_subprocess_fn_time(
135
- subprocess_key, fn_name, elapsed_time
145
+ try:
146
+ result = await self.task_runner.run(recv_fn, [], RunType.THREAD)
147
+ logger.debug(
148
+ f"Received response from subprocess {subprocess_key}, function {fn_name}: status={result.get('status', 'unknown')}"
136
149
  )
137
- if websocket_manager is not None:
138
- if result["content"]:
139
- await websocket_manager.send_message_to_requester(
140
- msg_id, result["content"], result["messageType"]
141
- )
142
- await self.maybe_send_latest_run_time_info(
143
- subprocess_key, fn_name, msg_id, websocket_manager
150
+
151
+ elapsed_time = time.perf_counter() - start_time
152
+ if result["status"] == "success":
153
+ self.update_average_subprocess_fn_time(
154
+ subprocess_key, fn_name, elapsed_time
144
155
  )
145
- else:
146
- results.append(result)
156
+ if websocket_manager is not None:
157
+ if result["content"]:
158
+ await websocket_manager.send_message_to_requester(
159
+ msg_id, result["content"], result["messageType"]
160
+ )
161
+ await self.maybe_send_latest_run_time_info(
162
+ subprocess_key, fn_name, msg_id, websocket_manager
163
+ )
164
+ else:
165
+ results.append(result)
166
+ except EOFError:
167
+ logger.error(
168
+ f"EOF error when receiving response from subprocess {subprocess_key}, function {fn_name}"
169
+ )
170
+ # Add stack trace to see where exactly the error occurs
171
+ traceback.print_exc()
172
+ # Consider adding a placeholder result or raising to caller
173
+ except Exception as e:
174
+ logger.error(
175
+ f"Error receiving response from subprocess {subprocess_key}, function {fn_name}: {str(e)}"
176
+ )
177
+ traceback.print_exc()
147
178
 
148
179
  async def add_custom_fns(self, code_graph, exporter_obj):
149
180
  for c in code_graph:
@@ -61,8 +61,17 @@ class SettaInMemoryFnSubprocess:
61
61
  sys.stderr = output_capture
62
62
 
63
63
  while True:
64
- msg = self.child_conn.recv() # Wait for requests
65
- msg_type = msg["type"]
64
+ try:
65
+ msg = self.child_conn.recv()
66
+ msg_type = msg["type"]
67
+ logger.debug(f"Subprocess received message type: {msg_type}")
68
+ except EOFError:
69
+ logger.error("EOF error when receiving message in subprocess")
70
+ break
71
+ except Exception as e:
72
+ logger.error(f"Error receiving message in subprocess: {str(e)}")
73
+ traceback.print_exc()
74
+ break
66
75
 
67
76
  if msg_type == "shutdown":
68
77
  # Signal all worker threads to stop
@@ -114,21 +123,43 @@ class SettaInMemoryFnSubprocess:
114
123
 
115
124
  elif msg_type == "call" or msg_type == "call_with_new_exporter_obj":
116
125
  fn_name = msg["fn_name"]
126
+ try:
127
+ logger.debug(
128
+ f"Subprocess about to process message for {fn_name}"
129
+ )
130
+ # Start a worker for this function if needed
131
+ self._start_worker_for_fn(
132
+ fn_name,
133
+ fn_workers,
134
+ fn_message_queues,
135
+ fns_dict,
136
+ cache,
137
+ lock,
138
+ send_lock,
139
+ self.child_conn,
140
+ )
117
141
 
118
- # Start a worker for this function if needed
119
- self._start_worker_for_fn(
120
- fn_name,
121
- fn_workers,
122
- fn_message_queues,
123
- fns_dict,
124
- cache,
125
- lock,
126
- send_lock,
127
- self.child_conn,
128
- )
129
-
130
- # Add the message to the function's queue
131
- fn_message_queues[fn_name].put(msg)
142
+ # Add the message to the function's queue
143
+ fn_message_queues[fn_name].put(msg)
144
+ except Exception as e:
145
+ logger.error(
146
+ f"Error processing message for {fn_name}: {str(e)}"
147
+ )
148
+ traceback.print_exc()
149
+ # Make sure to send an error response, so the parent doesn't hang
150
+ with send_lock:
151
+ try:
152
+ self.child_conn.send(
153
+ {
154
+ "status": "error",
155
+ "error": str(e),
156
+ "messageType": None,
157
+ }
158
+ )
159
+ except:
160
+ logger.error(
161
+ "Failed to send error response back to parent"
162
+ )
132
163
 
133
164
  except Exception as e:
134
165
  traceback.print_exc()
@@ -145,11 +176,14 @@ class SettaInMemoryFnSubprocess:
145
176
  self, fn_name, fn_message_queues, fns_dict, cache, lock, send_lock, child_conn
146
177
  ):
147
178
  """Worker thread that processes messages for a specific function"""
179
+ logger.debug(f"Started worker thread for {fn_name}")
148
180
  while True:
149
181
  try:
150
182
  # Get a message from the queue
151
183
  msg = fn_message_queues[fn_name].get()
152
-
184
+ logger.debug(
185
+ f"Worker thread for {fn_name} got message of type: {msg.get('type') if msg else 'None'}"
186
+ )
153
187
  if msg is None: # Sentinel value to stop the thread
154
188
  break
155
189
 
@@ -241,10 +275,11 @@ class SettaInMemoryFnSubprocess:
241
275
 
242
276
  # Send shutdown message to the subprocess
243
277
  try:
278
+ logger.debug("Sending shutdown message to subprocess")
244
279
  self.parent_conn.send({"type": "shutdown"})
245
- except (BrokenPipeError, EOFError):
246
- # Pipe might already be closed, that's okay
247
- pass
280
+ logger.debug("Shutdown message sent")
281
+ except (BrokenPipeError, EOFError) as e:
282
+ logger.error(f"Error sending shutdown message: {str(e)}")
248
283
 
249
284
  # Join the process with timeout
250
285
  self.process.join(timeout=2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: setta
3
- Version: 0.0.14.dev4
3
+ Version: 0.0.14.dev6
4
4
  Summary: Python without the donkeywork.
5
5
  Home-page: https://setta.dev
6
6
  Author: Kevin Musgrave, Jeff Musgrave
@@ -1 +0,0 @@
1
- __version__ = "0.0.14.dev4"
@@ -1,29 +0,0 @@
1
- import asyncio
2
- import inspect
3
- from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
4
- from enum import Enum
5
-
6
-
7
- class RunType(Enum):
8
- SUBPROCESS = "SUBPROCESS"
9
- THREAD = "THREAD"
10
- NONE = "NONE"
11
-
12
-
13
- class TaskRunner:
14
- def __init__(self):
15
- self.thread_executor = ThreadPoolExecutor(max_workers=2)
16
- self.process_executor = ProcessPoolExecutor(max_workers=2)
17
-
18
- async def run(self, fn, fn_args, run_as):
19
- if inspect.iscoroutinefunction(fn):
20
- return await fn(*fn_args)
21
-
22
- if run_as == RunType.NONE:
23
- return fn(*fn_args)
24
- elif run_as == RunType.THREAD:
25
- executor = self.thread_executor
26
- elif run_as == RunType.SUBPROCESS:
27
- executor = self.process_executor
28
-
29
- return await asyncio.get_running_loop().run_in_executor(executor, fn, *fn_args)
File without changes
File without changes
File without changes