tisserande 0.0.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 (423) hide show
  1. tisserande-0.0.0/.github/workflows/docs.yml +44 -0
  2. tisserande-0.0.0/.github/workflows/linting.yml +33 -0
  3. tisserande-0.0.0/.github/workflows/publish-to-pypi.yml +39 -0
  4. tisserande-0.0.0/.github/workflows/smoke-test.yml +36 -0
  5. tisserande-0.0.0/.github/workflows/testing-and-coverage.yml +39 -0
  6. tisserande-0.0.0/.gitignore +18 -0
  7. tisserande-0.0.0/.readthedocs.yaml +17 -0
  8. tisserande-0.0.0/CLAUDE.md +180 -0
  9. tisserande-0.0.0/PKG-INFO +229 -0
  10. tisserande-0.0.0/README.md +179 -0
  11. tisserande-0.0.0/docs/Makefile +19 -0
  12. tisserande-0.0.0/docs/_build/doctrees/__intersphinx_cache__/fastapi_objects.inv +0 -0
  13. tisserande-0.0.0/docs/_build/doctrees/__intersphinx_cache__/pydantic_objects.inv +0 -0
  14. tisserande-0.0.0/docs/_build/doctrees/__intersphinx_cache__/python_objects.inv +0 -0
  15. tisserande-0.0.0/docs/_build/doctrees/__intersphinx_cache__/sqlalchemy_objects.inv +0 -0
  16. tisserande-0.0.0/docs/_build/doctrees/api/index.doctree +0 -0
  17. tisserande-0.0.0/docs/_build/doctrees/autoapi/index.doctree +0 -0
  18. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/cli/index.doctree +0 -0
  19. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/cli/local/index.doctree +0 -0
  20. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/cli/local/top/index.doctree +0 -0
  21. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/cli/server/index.doctree +0 -0
  22. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/cli/server/top/index.doctree +0 -0
  23. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/config/index.doctree +0 -0
  24. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/base/index.doctree +0 -0
  25. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/data_types/index.doctree +0 -0
  26. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/edges/index.doctree +0 -0
  27. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/execution/index.doctree +0 -0
  28. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/function_types/index.doctree +0 -0
  29. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/index.doctree +0 -0
  30. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db/nodes/index.doctree +0 -0
  31. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/data_types/index.doctree +0 -0
  32. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/edges/index.doctree +0 -0
  33. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/execution/index.doctree +0 -0
  34. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/function_types/index.doctree +0 -0
  35. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/index.doctree +0 -0
  36. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/db_oper/nodes/index.doctree +0 -0
  37. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/index.doctree +0 -0
  38. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/data_types/index.doctree +0 -0
  39. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/edges/index.doctree +0 -0
  40. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/execution/index.doctree +0 -0
  41. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/function_types/index.doctree +0 -0
  42. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/index.doctree +0 -0
  43. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_async/nodes/index.doctree +0 -0
  44. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/data_types/index.doctree +0 -0
  45. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/edges/index.doctree +0 -0
  46. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/execution/index.doctree +0 -0
  47. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/function_types/index.doctree +0 -0
  48. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/index.doctree +0 -0
  49. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/local_sync/nodes/index.doctree +0 -0
  50. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/data_types/index.doctree +0 -0
  51. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/edges/index.doctree +0 -0
  52. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/execution/index.doctree +0 -0
  53. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/function_types/index.doctree +0 -0
  54. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/index.doctree +0 -0
  55. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/nodes/index.doctree +0 -0
  56. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/models/types/index.doctree +0 -0
  57. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/router/app/index.doctree +0 -0
  58. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/router/index.doctree +0 -0
  59. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/annotations/index.doctree +0 -0
  60. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/backends/index.doctree +0 -0
  61. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/context/index.doctree +0 -0
  62. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/decorator/index.doctree +0 -0
  63. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/index.doctree +0 -0
  64. tisserande-0.0.0/docs/_build/doctrees/autoapi/tisserande/tracking/inspector/index.doctree +0 -0
  65. tisserande-0.0.0/docs/_build/doctrees/environment.pickle +0 -0
  66. tisserande-0.0.0/docs/_build/doctrees/getting_started.doctree +0 -0
  67. tisserande-0.0.0/docs/_build/doctrees/index.doctree +0 -0
  68. tisserande-0.0.0/docs/_build/doctrees/user_guide/annotations.doctree +0 -0
  69. tisserande-0.0.0/docs/_build/doctrees/user_guide/architecture.doctree +0 -0
  70. tisserande-0.0.0/docs/_build/doctrees/user_guide/cli.doctree +0 -0
  71. tisserande-0.0.0/docs/_build/doctrees/user_guide/configuration.doctree +0 -0
  72. tisserande-0.0.0/docs/_build/doctrees/user_guide/index.doctree +0 -0
  73. tisserande-0.0.0/docs/_build/doctrees/user_guide/querying.doctree +0 -0
  74. tisserande-0.0.0/docs/_build/doctrees/user_guide/tracking.doctree +0 -0
  75. tisserande-0.0.0/docs/_build/html/.buildinfo +4 -0
  76. tisserande-0.0.0/docs/_build/html/_modules/index.html +229 -0
  77. tisserande-0.0.0/docs/_build/html/_modules/tisserande/cli/local/top.html +234 -0
  78. tisserande-0.0.0/docs/_build/html/_modules/tisserande/cli/server/top.html +217 -0
  79. tisserande-0.0.0/docs/_build/html/_modules/tisserande/config.html +290 -0
  80. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db/data_types.html +437 -0
  81. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db/edges.html +252 -0
  82. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db/execution.html +274 -0
  83. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db/function_types.html +323 -0
  84. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db/nodes.html +335 -0
  85. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db_oper/data_types.html +271 -0
  86. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db_oper/edges.html +212 -0
  87. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db_oper/execution.html +212 -0
  88. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db_oper/function_types.html +259 -0
  89. tisserande-0.0.0/docs/_build/html/_modules/tisserande/db_oper/nodes.html +262 -0
  90. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_async/data_types.html +280 -0
  91. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_async/edges.html +213 -0
  92. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_async/execution.html +213 -0
  93. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_async/function_types.html +241 -0
  94. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_async/nodes.html +213 -0
  95. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_sync/data_types.html +280 -0
  96. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_sync/edges.html +213 -0
  97. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_sync/execution.html +213 -0
  98. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_sync/function_types.html +241 -0
  99. tisserande-0.0.0/docs/_build/html/_modules/tisserande/local_sync/nodes.html +213 -0
  100. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/data_types.html +452 -0
  101. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/edges.html +254 -0
  102. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/execution.html +275 -0
  103. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/function_types.html +337 -0
  104. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/nodes.html +962 -0
  105. tisserande-0.0.0/docs/_build/html/_modules/tisserande/models/types.html +294 -0
  106. tisserande-0.0.0/docs/_build/html/_modules/tisserande/router/app.html +235 -0
  107. tisserande-0.0.0/docs/_build/html/_modules/tisserande/tracking/annotations.html +254 -0
  108. tisserande-0.0.0/docs/_build/html/_modules/tisserande/tracking/backends.html +308 -0
  109. tisserande-0.0.0/docs/_build/html/_modules/tisserande/tracking/context.html +299 -0
  110. tisserande-0.0.0/docs/_build/html/_modules/tisserande/tracking/decorator.html +486 -0
  111. tisserande-0.0.0/docs/_build/html/_modules/tisserande/tracking/inspector.html +380 -0
  112. tisserande-0.0.0/docs/_build/html/_sources/api/index.rst.txt +9 -0
  113. tisserande-0.0.0/docs/_build/html/_sources/autoapi/index.rst.txt +11 -0
  114. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/cli/index.rst.txt +16 -0
  115. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/cli/local/index.rst.txt +15 -0
  116. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/cli/local/top/index.rst.txt +22 -0
  117. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/cli/server/index.rst.txt +15 -0
  118. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/cli/server/top/index.rst.txt +22 -0
  119. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/config/index.rst.txt +104 -0
  120. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/base/index.rst.txt +14 -0
  121. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/data_types/index.rst.txt +519 -0
  122. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/edges/index.rst.txt +110 -0
  123. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/execution/index.rst.txt +126 -0
  124. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/function_types/index.rst.txt +272 -0
  125. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/index.rst.txt +1114 -0
  126. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db/nodes/index.rst.txt +167 -0
  127. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/data_types/index.rst.txt +377 -0
  128. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/edges/index.rst.txt +82 -0
  129. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/execution/index.rst.txt +82 -0
  130. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/function_types/index.rst.txt +208 -0
  131. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/index.rst.txt +65 -0
  132. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/db_oper/nodes/index.rst.txt +43 -0
  133. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/index.rst.txt +23 -0
  134. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/data_types/index.rst.txt +161 -0
  135. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/edges/index.rst.txt +46 -0
  136. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/execution/index.rst.txt +46 -0
  137. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/function_types/index.rst.txt +92 -0
  138. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/index.rst.txt +65 -0
  139. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_async/nodes/index.rst.txt +46 -0
  140. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/data_types/index.rst.txt +131 -0
  141. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/edges/index.rst.txt +41 -0
  142. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/execution/index.rst.txt +41 -0
  143. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/function_types/index.rst.txt +77 -0
  144. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/index.rst.txt +65 -0
  145. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/local_sync/nodes/index.rst.txt +41 -0
  146. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/data_types/index.rst.txt +339 -0
  147. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/edges/index.rst.txt +89 -0
  148. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/execution/index.rst.txt +111 -0
  149. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/function_types/index.rst.txt +195 -0
  150. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/index.rst.txt +1428 -0
  151. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/nodes/index.rst.txt +999 -0
  152. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/models/types/index.rst.txt +184 -0
  153. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/router/app/index.rst.txt +22 -0
  154. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/router/index.rst.txt +15 -0
  155. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/annotations/index.rst.txt +57 -0
  156. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/backends/index.rst.txt +81 -0
  157. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/context/index.rst.txt +39 -0
  158. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/decorator/index.rst.txt +80 -0
  159. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/index.rst.txt +98 -0
  160. tisserande-0.0.0/docs/_build/html/_sources/autoapi/tisserande/tracking/inspector/index.rst.txt +69 -0
  161. tisserande-0.0.0/docs/_build/html/_sources/getting_started.rst.txt +135 -0
  162. tisserande-0.0.0/docs/_build/html/_sources/index.rst.txt +33 -0
  163. tisserande-0.0.0/docs/_build/html/_sources/user_guide/annotations.rst.txt +124 -0
  164. tisserande-0.0.0/docs/_build/html/_sources/user_guide/architecture.rst.txt +97 -0
  165. tisserande-0.0.0/docs/_build/html/_sources/user_guide/cli.rst.txt +83 -0
  166. tisserande-0.0.0/docs/_build/html/_sources/user_guide/configuration.rst.txt +116 -0
  167. tisserande-0.0.0/docs/_build/html/_sources/user_guide/index.rst.txt +12 -0
  168. tisserande-0.0.0/docs/_build/html/_sources/user_guide/querying.rst.txt +122 -0
  169. tisserande-0.0.0/docs/_build/html/_sources/user_guide/tracking.rst.txt +132 -0
  170. tisserande-0.0.0/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  171. tisserande-0.0.0/docs/_build/html/_static/base-stemmer.js +476 -0
  172. tisserande-0.0.0/docs/_build/html/_static/basic.css +906 -0
  173. tisserande-0.0.0/docs/_build/html/_static/css/badge_only.css +1 -0
  174. tisserande-0.0.0/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  175. tisserande-0.0.0/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  176. tisserande-0.0.0/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  177. tisserande-0.0.0/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  178. tisserande-0.0.0/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  179. tisserande-0.0.0/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  180. tisserande-0.0.0/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  181. tisserande-0.0.0/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  182. tisserande-0.0.0/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  183. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  184. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  185. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  186. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  187. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  188. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  189. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  190. tisserande-0.0.0/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  191. tisserande-0.0.0/docs/_build/html/_static/css/theme.css +4 -0
  192. tisserande-0.0.0/docs/_build/html/_static/doctools.js +150 -0
  193. tisserande-0.0.0/docs/_build/html/_static/documentation_options.js +13 -0
  194. tisserande-0.0.0/docs/_build/html/_static/english-stemmer.js +1066 -0
  195. tisserande-0.0.0/docs/_build/html/_static/file.png +0 -0
  196. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  197. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  198. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  199. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  200. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  201. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  202. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  203. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  204. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  205. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  206. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  207. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  208. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  209. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  210. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  211. tisserande-0.0.0/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  212. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  213. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  214. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  215. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  216. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  217. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  218. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  219. tisserande-0.0.0/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  220. tisserande-0.0.0/docs/_build/html/_static/graphviz.css +12 -0
  221. tisserande-0.0.0/docs/_build/html/_static/jquery.js +2 -0
  222. tisserande-0.0.0/docs/_build/html/_static/js/badge_only.js +1 -0
  223. tisserande-0.0.0/docs/_build/html/_static/js/theme.js +1 -0
  224. tisserande-0.0.0/docs/_build/html/_static/js/versions.js +228 -0
  225. tisserande-0.0.0/docs/_build/html/_static/language_data.js +13 -0
  226. tisserande-0.0.0/docs/_build/html/_static/minus.png +0 -0
  227. tisserande-0.0.0/docs/_build/html/_static/plus.png +0 -0
  228. tisserande-0.0.0/docs/_build/html/_static/pygments.css +75 -0
  229. tisserande-0.0.0/docs/_build/html/_static/searchtools.js +693 -0
  230. tisserande-0.0.0/docs/_build/html/_static/sphinx_highlight.js +159 -0
  231. tisserande-0.0.0/docs/_build/html/api/index.html +223 -0
  232. tisserande-0.0.0/docs/_build/html/autoapi/index.html +281 -0
  233. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/cli/index.html +214 -0
  234. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/cli/local/index.html +214 -0
  235. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/cli/local/top/index.html +226 -0
  236. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/cli/server/index.html +214 -0
  237. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/cli/server/top/index.html +226 -0
  238. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/config/index.html +304 -0
  239. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/base/index.html +209 -0
  240. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/data_types/index.html +748 -0
  241. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/edges/index.html +313 -0
  242. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/execution/index.html +333 -0
  243. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/function_types/index.html +485 -0
  244. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/index.html +1400 -0
  245. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db/nodes/index.html +382 -0
  246. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/data_types/index.html +631 -0
  247. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/edges/index.html +291 -0
  248. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/execution/index.html +291 -0
  249. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/function_types/index.html +433 -0
  250. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/index.html +323 -0
  251. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/db_oper/nodes/index.html +247 -0
  252. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/index.html +220 -0
  253. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/data_types/index.html +391 -0
  254. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/edges/index.html +251 -0
  255. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/execution/index.html +251 -0
  256. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/function_types/index.html +307 -0
  257. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/index.html +323 -0
  258. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_async/nodes/index.html +251 -0
  259. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/data_types/index.html +355 -0
  260. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/edges/index.html +245 -0
  261. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/execution/index.html +245 -0
  262. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/function_types/index.html +289 -0
  263. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/index.html +323 -0
  264. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/local_sync/nodes/index.html +245 -0
  265. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/data_types/index.html +538 -0
  266. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/edges/index.html +283 -0
  267. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/execution/index.html +303 -0
  268. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/function_types/index.html +390 -0
  269. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/index.html +1592 -0
  270. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/nodes/index.html +1157 -0
  271. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/models/types/index.html +390 -0
  272. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/router/app/index.html +225 -0
  273. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/router/index.html +213 -0
  274. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/annotations/index.html +297 -0
  275. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/backends/index.html +307 -0
  276. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/context/index.html +238 -0
  277. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/decorator/index.html +301 -0
  278. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/index.html +349 -0
  279. tisserande-0.0.0/docs/_build/html/autoapi/tisserande/tracking/inspector/index.html +267 -0
  280. tisserande-0.0.0/docs/_build/html/genindex.html +2777 -0
  281. tisserande-0.0.0/docs/_build/html/getting_started.html +322 -0
  282. tisserande-0.0.0/docs/_build/html/index.html +254 -0
  283. tisserande-0.0.0/docs/_build/html/objects.inv +0 -0
  284. tisserande-0.0.0/docs/_build/html/py-modindex.html +444 -0
  285. tisserande-0.0.0/docs/_build/html/search.html +214 -0
  286. tisserande-0.0.0/docs/_build/html/searchindex.js +1 -0
  287. tisserande-0.0.0/docs/_build/html/user_guide/annotations.html +343 -0
  288. tisserande-0.0.0/docs/_build/html/user_guide/architecture.html +307 -0
  289. tisserande-0.0.0/docs/_build/html/user_guide/cli.html +276 -0
  290. tisserande-0.0.0/docs/_build/html/user_guide/configuration.html +321 -0
  291. tisserande-0.0.0/docs/_build/html/user_guide/index.html +253 -0
  292. tisserande-0.0.0/docs/_build/html/user_guide/querying.html +329 -0
  293. tisserande-0.0.0/docs/_build/html/user_guide/tracking.html +320 -0
  294. tisserande-0.0.0/docs/_static/.gitkeep +0 -0
  295. tisserande-0.0.0/docs/_templates/.gitkeep +0 -0
  296. tisserande-0.0.0/docs/api/index.rst +9 -0
  297. tisserande-0.0.0/docs/autoapi/index.rst +11 -0
  298. tisserande-0.0.0/docs/autoapi/tisserande/cli/index.rst +16 -0
  299. tisserande-0.0.0/docs/autoapi/tisserande/cli/local/index.rst +15 -0
  300. tisserande-0.0.0/docs/autoapi/tisserande/cli/local/top/index.rst +22 -0
  301. tisserande-0.0.0/docs/autoapi/tisserande/cli/server/index.rst +15 -0
  302. tisserande-0.0.0/docs/autoapi/tisserande/cli/server/top/index.rst +22 -0
  303. tisserande-0.0.0/docs/autoapi/tisserande/config/index.rst +104 -0
  304. tisserande-0.0.0/docs/autoapi/tisserande/db/base/index.rst +14 -0
  305. tisserande-0.0.0/docs/autoapi/tisserande/db/data_types/index.rst +519 -0
  306. tisserande-0.0.0/docs/autoapi/tisserande/db/edges/index.rst +110 -0
  307. tisserande-0.0.0/docs/autoapi/tisserande/db/execution/index.rst +126 -0
  308. tisserande-0.0.0/docs/autoapi/tisserande/db/function_types/index.rst +272 -0
  309. tisserande-0.0.0/docs/autoapi/tisserande/db/index.rst +1114 -0
  310. tisserande-0.0.0/docs/autoapi/tisserande/db/nodes/index.rst +167 -0
  311. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/data_types/index.rst +377 -0
  312. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/edges/index.rst +82 -0
  313. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/execution/index.rst +82 -0
  314. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/function_types/index.rst +208 -0
  315. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/index.rst +65 -0
  316. tisserande-0.0.0/docs/autoapi/tisserande/db_oper/nodes/index.rst +43 -0
  317. tisserande-0.0.0/docs/autoapi/tisserande/index.rst +23 -0
  318. tisserande-0.0.0/docs/autoapi/tisserande/local_async/data_types/index.rst +161 -0
  319. tisserande-0.0.0/docs/autoapi/tisserande/local_async/edges/index.rst +46 -0
  320. tisserande-0.0.0/docs/autoapi/tisserande/local_async/execution/index.rst +46 -0
  321. tisserande-0.0.0/docs/autoapi/tisserande/local_async/function_types/index.rst +92 -0
  322. tisserande-0.0.0/docs/autoapi/tisserande/local_async/index.rst +65 -0
  323. tisserande-0.0.0/docs/autoapi/tisserande/local_async/nodes/index.rst +46 -0
  324. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/data_types/index.rst +131 -0
  325. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/edges/index.rst +41 -0
  326. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/execution/index.rst +41 -0
  327. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/function_types/index.rst +77 -0
  328. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/index.rst +65 -0
  329. tisserande-0.0.0/docs/autoapi/tisserande/local_sync/nodes/index.rst +41 -0
  330. tisserande-0.0.0/docs/autoapi/tisserande/models/data_types/index.rst +339 -0
  331. tisserande-0.0.0/docs/autoapi/tisserande/models/edges/index.rst +89 -0
  332. tisserande-0.0.0/docs/autoapi/tisserande/models/execution/index.rst +111 -0
  333. tisserande-0.0.0/docs/autoapi/tisserande/models/function_types/index.rst +195 -0
  334. tisserande-0.0.0/docs/autoapi/tisserande/models/index.rst +1428 -0
  335. tisserande-0.0.0/docs/autoapi/tisserande/models/nodes/index.rst +999 -0
  336. tisserande-0.0.0/docs/autoapi/tisserande/models/types/index.rst +184 -0
  337. tisserande-0.0.0/docs/autoapi/tisserande/router/app/index.rst +22 -0
  338. tisserande-0.0.0/docs/autoapi/tisserande/router/index.rst +15 -0
  339. tisserande-0.0.0/docs/autoapi/tisserande/tracking/annotations/index.rst +57 -0
  340. tisserande-0.0.0/docs/autoapi/tisserande/tracking/backends/index.rst +81 -0
  341. tisserande-0.0.0/docs/autoapi/tisserande/tracking/context/index.rst +39 -0
  342. tisserande-0.0.0/docs/autoapi/tisserande/tracking/decorator/index.rst +80 -0
  343. tisserande-0.0.0/docs/autoapi/tisserande/tracking/index.rst +98 -0
  344. tisserande-0.0.0/docs/autoapi/tisserande/tracking/inspector/index.rst +69 -0
  345. tisserande-0.0.0/docs/conf.py +58 -0
  346. tisserande-0.0.0/docs/getting_started.rst +135 -0
  347. tisserande-0.0.0/docs/index.rst +33 -0
  348. tisserande-0.0.0/docs/user_guide/annotations.rst +124 -0
  349. tisserande-0.0.0/docs/user_guide/architecture.rst +97 -0
  350. tisserande-0.0.0/docs/user_guide/cli.rst +83 -0
  351. tisserande-0.0.0/docs/user_guide/configuration.rst +116 -0
  352. tisserande-0.0.0/docs/user_guide/index.rst +12 -0
  353. tisserande-0.0.0/docs/user_guide/querying.rst +122 -0
  354. tisserande-0.0.0/docs/user_guide/tracking.rst +132 -0
  355. tisserande-0.0.0/pyproject.toml +180 -0
  356. tisserande-0.0.0/setup.cfg +4 -0
  357. tisserande-0.0.0/src/tisserande/__init__.py +3 -0
  358. tisserande-0.0.0/src/tisserande/_version.py +24 -0
  359. tisserande-0.0.0/src/tisserande/cli/__init__.py +0 -0
  360. tisserande-0.0.0/src/tisserande/cli/local/__init__.py +0 -0
  361. tisserande-0.0.0/src/tisserande/cli/local/top.py +36 -0
  362. tisserande-0.0.0/src/tisserande/cli/server/__init__.py +0 -0
  363. tisserande-0.0.0/src/tisserande/cli/server/top.py +17 -0
  364. tisserande-0.0.0/src/tisserande/config.py +59 -0
  365. tisserande-0.0.0/src/tisserande/db/__init__.py +52 -0
  366. tisserande-0.0.0/src/tisserande/db/base.py +10 -0
  367. tisserande-0.0.0/src/tisserande/db/data_types.py +137 -0
  368. tisserande-0.0.0/src/tisserande/db/edges.py +37 -0
  369. tisserande-0.0.0/src/tisserande/db/execution.py +42 -0
  370. tisserande-0.0.0/src/tisserande/db/function_types.py +74 -0
  371. tisserande-0.0.0/src/tisserande/db/nodes.py +288 -0
  372. tisserande-0.0.0/src/tisserande/db/utils.py +10 -0
  373. tisserande-0.0.0/src/tisserande/db_oper/__init__.py +20 -0
  374. tisserande-0.0.0/src/tisserande/db_oper/data_types.py +42 -0
  375. tisserande-0.0.0/src/tisserande/db_oper/edges.py +11 -0
  376. tisserande-0.0.0/src/tisserande/db_oper/execution.py +25 -0
  377. tisserande-0.0.0/src/tisserande/db_oper/function_types.py +48 -0
  378. tisserande-0.0.0/src/tisserande/db_oper/nodes.py +133 -0
  379. tisserande-0.0.0/src/tisserande/local_async/__init__.py +20 -0
  380. tisserande-0.0.0/src/tisserande/local_async/data_types.py +49 -0
  381. tisserande-0.0.0/src/tisserande/local_async/edges.py +12 -0
  382. tisserande-0.0.0/src/tisserande/local_async/execution.py +12 -0
  383. tisserande-0.0.0/src/tisserande/local_async/function_types.py +28 -0
  384. tisserande-0.0.0/src/tisserande/local_async/nodes.py +12 -0
  385. tisserande-0.0.0/src/tisserande/local_sync/__init__.py +20 -0
  386. tisserande-0.0.0/src/tisserande/local_sync/data_types.py +49 -0
  387. tisserande-0.0.0/src/tisserande/local_sync/edges.py +12 -0
  388. tisserande-0.0.0/src/tisserande/local_sync/execution.py +12 -0
  389. tisserande-0.0.0/src/tisserande/local_sync/function_types.py +28 -0
  390. tisserande-0.0.0/src/tisserande/local_sync/nodes.py +12 -0
  391. tisserande-0.0.0/src/tisserande/models/__init__.py +94 -0
  392. tisserande-0.0.0/src/tisserande/models/data_types.py +122 -0
  393. tisserande-0.0.0/src/tisserande/models/edges.py +29 -0
  394. tisserande-0.0.0/src/tisserande/models/execution.py +42 -0
  395. tisserande-0.0.0/src/tisserande/models/function_types.py +67 -0
  396. tisserande-0.0.0/src/tisserande/models/nodes.py +351 -0
  397. tisserande-0.0.0/src/tisserande/models/types.py +54 -0
  398. tisserande-0.0.0/src/tisserande/router/__init__.py +0 -0
  399. tisserande-0.0.0/src/tisserande/router/app.py +37 -0
  400. tisserande-0.0.0/src/tisserande/tracking/__init__.py +18 -0
  401. tisserande-0.0.0/src/tisserande/tracking/annotations.py +32 -0
  402. tisserande-0.0.0/src/tisserande/tracking/backends.py +73 -0
  403. tisserande-0.0.0/src/tisserande/tracking/context.py +96 -0
  404. tisserande-0.0.0/src/tisserande/tracking/decorator.py +297 -0
  405. tisserande-0.0.0/src/tisserande/tracking/inspector.py +172 -0
  406. tisserande-0.0.0/src/tisserande.egg-info/PKG-INFO +229 -0
  407. tisserande-0.0.0/src/tisserande.egg-info/SOURCES.txt +421 -0
  408. tisserande-0.0.0/src/tisserande.egg-info/dependency_links.txt +1 -0
  409. tisserande-0.0.0/src/tisserande.egg-info/entry_points.txt +3 -0
  410. tisserande-0.0.0/src/tisserande.egg-info/requires.txt +37 -0
  411. tisserande-0.0.0/src/tisserande.egg-info/scm_file_list.json +416 -0
  412. tisserande-0.0.0/src/tisserande.egg-info/scm_version.json +8 -0
  413. tisserande-0.0.0/src/tisserande.egg-info/top_level.txt +1 -0
  414. tisserande-0.0.0/tests/__init__.py +0 -0
  415. tisserande-0.0.0/tests/conftest.py +23 -0
  416. tisserande-0.0.0/tests/test_cli.py +50 -0
  417. tisserande-0.0.0/tests/test_db_oper_coverage.py +48 -0
  418. tisserande-0.0.0/tests/test_decorator_coverage.py +162 -0
  419. tisserande-0.0.0/tests/test_full_stack.py +120 -0
  420. tisserande-0.0.0/tests/test_inspector_coverage.py +186 -0
  421. tisserande-0.0.0/tests/test_models.py +79 -0
  422. tisserande-0.0.0/tests/test_router.py +19 -0
  423. tisserande-0.0.0/tests/test_tracking.py +131 -0
@@ -0,0 +1,44 @@
1
+ name: Docs Build
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "docs/**"
8
+ - "src/**"
9
+ - ".readthedocs.yaml"
10
+ - "pyproject.toml"
11
+ pull_request:
12
+ branches: [main]
13
+ paths:
14
+ - "docs/**"
15
+ - "src/**"
16
+ - ".readthedocs.yaml"
17
+ - "pyproject.toml"
18
+
19
+ jobs:
20
+ build-docs:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.13"
28
+
29
+ - name: Install dependencies
30
+ run: |
31
+ pip install -e ".[docs,dev]"
32
+
33
+ - name: Build docs
34
+ run: |
35
+ cd docs
36
+ make html
37
+
38
+ - name: Upload docs artifact
39
+ if: success()
40
+ uses: actions/upload-artifact@v4
41
+ with:
42
+ name: docs-html
43
+ path: docs/_build/html/
44
+ retention-days: 7
@@ -0,0 +1,33 @@
1
+ # This workflow will install Python dependencies,
2
+ # then perform static linting analysis.
3
+
4
+ name: Lint
5
+
6
+ on:
7
+ push:
8
+ branches: [main]
9
+ pull_request:
10
+ branches: [main]
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v4
19
+ with:
20
+ python-version: '3.13'
21
+ - name: Install dependencies
22
+ run: |
23
+ sudo apt-get update
24
+ python -m pip install --upgrade pip
25
+ pip install .
26
+ pip install .[dev]
27
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
28
+ - name: Type checking
29
+ run: |
30
+ mypy src
31
+ - name: Linting
32
+ run: |
33
+ ruff check src tests
@@ -0,0 +1,39 @@
1
+ # This workflow will upload a Python Package using
2
+ # Twine when a release is created
3
+ # For more information see:
4
+ # https://github.com/pypa/gh-action-pypi-publish#trusted-publishing
5
+
6
+ # This workflow uses actions that are not certified by GitHub.
7
+ # They are provided by a third-party and are governed by
8
+ # separate terms of service, privacy policy, and support
9
+ # documentation.
10
+
11
+ name: Upload Python Package
12
+
13
+ on:
14
+ release:
15
+ types: [published]
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ deploy:
22
+
23
+ runs-on: ubuntu-latest
24
+ permissions:
25
+ id-token: write
26
+ steps:
27
+ - uses: actions/checkout@v3
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v4
30
+ with:
31
+ python-version: '3.13'
32
+ - name: Install dependencies
33
+ run: |
34
+ python -m pip install --upgrade pip
35
+ pip install build
36
+ - name: Build package
37
+ run: python -m build
38
+ - name: Publish package
39
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,36 @@
1
+ # This workflow will run daily at 06:45.
2
+ # It will install Python dependencies and run tests with a variety of
3
+ # Python versions.
4
+
5
+ name: Unit test smoke test
6
+
7
+ on:
8
+ schedule:
9
+ - cron: 45 6 * * *
10
+
11
+ # Allows you to run this workflow manually from the Actions tab
12
+ workflow_dispatch:
13
+
14
+ jobs:
15
+ build:
16
+
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ matrix:
20
+ python-version: ['3.13']
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - name: Set up Python ${{ matrix.python-version }}
24
+ uses: actions/setup-python@v4
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+ - name: Install dependencies
28
+ run: |
29
+ sudo apt-get update
30
+ python -m pip install --upgrade pip
31
+ pip install .
32
+ pip install .[dev]
33
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
34
+ - name: Run unit tests with pytest
35
+ run: |
36
+ python -m pytest tests
@@ -0,0 +1,39 @@
1
+ # This workflow will install Python dependencies, run tests and report
2
+ # code coverage with a variety of Python versions
3
+
4
+ name: Unit test and code coverage
5
+
6
+ on:
7
+ schedule:
8
+ - cron: 45 7 * * 1
9
+ push:
10
+ branches: [main]
11
+ pull_request:
12
+ branches: [main]
13
+
14
+ jobs:
15
+ build:
16
+
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ matrix:
20
+ python-version: ['3.13']
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ with:
24
+ fetch-tags: true
25
+ fetch-depth: 0
26
+ - name: Set up Python ${{ matrix.python-version }}
27
+ uses: actions/setup-python@v4
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+ - name: Install dependencies
31
+ run: |
32
+ sudo apt-get update
33
+ python -m pip install --upgrade pip
34
+ pip install .
35
+ pip install .[dev]
36
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
37
+ - name: Run unit tests with pytest
38
+ run: |
39
+ python -m pytest tests
@@ -0,0 +1,18 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .venv/
10
+ venv/
11
+ htmlcov/
12
+ .coverage
13
+ .coverage.*
14
+ *.db
15
+ .pytest_cache/
16
+ .ruff_cache/
17
+ .mypy_cache/
18
+ src/tisserande/_version.py
@@ -0,0 +1,17 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.13"
7
+
8
+ sphinx:
9
+ configuration: docs/conf.py
10
+
11
+ python:
12
+ install:
13
+ - method: pip
14
+ path: .
15
+ extra_requirements:
16
+ - docs
17
+ - server
@@ -0,0 +1,180 @@
1
+ # CLAUDE.md — tisserande
2
+
3
+ ## Overview
4
+
5
+ `tisserande` is a Python package for tracking execution provenance of Python functions and shell scripts. It records what functions were called, what data they consumed and produced, and how long they took — all as a directed acyclic graph (DAG) stored in a database.
6
+
7
+ The package builds on top of `macon` (at `/Users/echarles/software/KIPAC/macon`) which provides a layered CRUD framework. Tisserande adds tracking decorators for automatic provenance capture.
8
+
9
+ ## Architecture — Layered Design
10
+
11
+ ```
12
+ Tracking Decorators (@track, @track_async, track_shell)
13
+ └── TrackingContext + ArgumentInspector
14
+ └── TrackingBackend (LocalSyncBackend / NullBackend)
15
+ └── local_sync (SyncOperations) ← asyncio.run() wrappers
16
+ └── local_async (LocalOperations) ← @with_session decorators
17
+ └── db_oper (TableOperations) ← FK resolution
18
+ └── macon.db_funcs (raw async SQLAlchemy queries)
19
+ └── macon.db (Base, session)
20
+ ```
21
+
22
+ | Layer | Purpose | Key Base Class (from macon) |
23
+ |-------|---------|----------------------------|
24
+ | `models/` | Pydantic models (Base/Create/Response triplets) | `pydantic.BaseModel` |
25
+ | `db/` | SQLAlchemy ORM tables | `macon.db.base.Base` |
26
+ | `db_oper/` | `TableOperations` with FK resolution | `macon.db_oper.base.TableOperations` |
27
+ | `local_async/` | Session-managed async operations | `macon.local_async.base.LocalOperations` |
28
+ | `local_sync/` | Synchronous wrappers | `macon.local_sync.base.SyncOperations` |
29
+ | `tracking/` | Decorators, inspection, backends, context | *(tisserande-specific)* |
30
+ | `router/` | FastAPI app with auto-generated CRUD endpoints | `macon.router.base.create_table_router` |
31
+ | `cli/` | Click CLI entry points | `macon.cli.local.base.make_table_group` |
32
+ | `config.py` | Pydantic Settings configuration | `pydantic_settings.BaseSettings` |
33
+
34
+ ## Domain Model
35
+
36
+ The provenance graph has three entity types:
37
+
38
+ - **Nodes** — vertices in the DAG. A single `node` table with a `type_` discriminator column and nullable type-specific fields.
39
+ - Data nodes: `data_file`, `config_file`, `config_dict`, `parameter`, `array`, `object`
40
+ - Logic nodes: `python_function`, `member_function`, `shell_function`
41
+ - **Edges** — directed links between nodes (`from_id` → `to_id`)
42
+ - Data → Logic = "input to function"
43
+ - Logic → Data = "output from function"
44
+ - **Executions** — groups all nodes/edges from a single function call, with timing and status
45
+
46
+ Each node type can optionally reference a **type table** (e.g., `data_file_type`, `python_function`) for reusable definitions.
47
+
48
+ ## Key Patterns
49
+
50
+ - **Single Node table**: All node types share one table with nullable columns. Simplifies graph queries since edges reference only one table.
51
+ - **UUID7 primary keys** for nodes/executions (time-ordered, via `uuid_utils`), int PKs for type tables and edges. Note: `uuid_utils.UUID` is not a subclass of `uuid.UUID` — we use a `uuid7()` wrapper in `db/utils.py` that returns standard `uuid.UUID`.
52
+ - **Macon integration**: Inherits `macon.db.base.Base`, uses `TableOperations`, `LocalOperations`, `SyncOperations`, `create_table_router`, `make_table_group`.
53
+ - **Three-model pattern** (from macon): `FooBase` → `FooCreate` (creation fields) → `Foo` (response with `id_`, `ConfigDict(from_attributes=True)`, `col_names_for_table`).
54
+ - **Tracking annotations**: `Annotated[]` type aliases (`DataFile[T]`, `Param[T]`, etc.) control how arguments are classified.
55
+ - **Pluggable backends**: `TrackingBackend` protocol allows `LocalSyncBackend` (real DB), `NullBackend` (testing), or custom implementations.
56
+ - **Decorator no-op**: If `configure()` hasn't been called, `@track` is transparent (function runs without tracking overhead).
57
+ - **Enum-based status/types**: Tracking code passes `ExecutionStatus` and `NodeType` enums; conversion to string values happens at the db_oper/backend layer.
58
+ - **`reset()`**: Clears the configured backend, making `configure()` safe to call multiple times (useful in tests).
59
+
60
+ ## Critical Files
61
+
62
+ ### Tracking system
63
+ - `src/tisserande/tracking/decorator.py` — `@track`, `@track_async`, `track_shell()`, `configure()`, `reset()`, `get_backend()`
64
+ - `src/tisserande/tracking/context.py` — `TrackingContext` orchestrates one execution lifecycle
65
+ - `src/tisserande/tracking/inspector.py` — `ArgumentInspector` classifies args → NodeType
66
+ - `src/tisserande/tracking/annotations.py` — `DataFile`, `Param`, `Untracked`, etc.
67
+ - `src/tisserande/tracking/backends.py` — `TrackingBackend` protocol, `LocalSyncBackend`, `NullBackend`
68
+
69
+ ### Models & DB
70
+ - `src/tisserande/models/types.py` — `NodeType` and `ExecutionStatus` enums
71
+ - `src/tisserande/models/nodes.py` — All node Pydantic models (generic + typed variants)
72
+ - `src/tisserande/db/nodes.py` — Single `NodeTable` ORM model
73
+ - `src/tisserande/db/execution.py` — `ExecutionTable` ORM model
74
+ - `src/tisserande/db/utils.py` — Shared `uuid7()` helper for time-ordered primary keys
75
+ - `src/tisserande/db_oper/nodes.py` — `NodeOperations` with type-dependent FK resolution
76
+ - `src/tisserande/db_oper/execution.py` — `ExecutionOperations` with status enum conversion
77
+
78
+ ### Configuration
79
+ - `src/tisserande/config.py` — `Configuration` class (env prefix: `TISSERANDE__`)
80
+
81
+ ## Development
82
+
83
+ ### Setup
84
+ ```bash
85
+ pip install -e ".[dev]"
86
+ ```
87
+
88
+ ### Testing
89
+ ```bash
90
+ pytest tests/ # 86 tests, in-memory SQLite, 100% coverage
91
+ pytest tests/ -x --tb=short # stop at first failure
92
+ pytest tests/ --cov=tisserande --cov-report=term-missing # with coverage
93
+ ```
94
+
95
+ Tests use `sqlite+aiosqlite://` (in-memory). The `conftest.py` fixture calls `init_db()` and creates all tables before each test.
96
+
97
+ Test files:
98
+ - `tests/test_tracking.py` — decorator and inspector unit tests with NullBackend
99
+ - `tests/test_full_stack.py` — end-to-end integration tests with real DB
100
+ - `tests/test_models.py` — Pydantic model validation
101
+ - `tests/test_inspector_coverage.py` — comprehensive inspector branch coverage
102
+ - `tests/test_decorator_coverage.py` — decorator flags and edge cases
103
+ - `tests/test_cli.py` — CLI entry points (Click test runner + mocked uvicorn)
104
+ - `tests/test_router.py` — FastAPI app creation and route registration
105
+ - `tests/test_db_oper_coverage.py` — FK resolution paths
106
+
107
+ Coverage exclusion patterns (in `pyproject.toml`):
108
+ - `"pragma: no cover"` — explicit exclusion
109
+ - `"unexpected"` — unexpected-condition guards
110
+ - `"raise AssertionError"` / `"raise NotImplementedError"` — abstract/impossible paths
111
+
112
+ ### Linting & Type Checking
113
+ ```bash
114
+ ruff check src/ tests/ # all checks pass
115
+ ruff format src/ tests/ # auto-format
116
+ mypy src/ # no issues in 49 source files
117
+ pylint src/ # 10.00/10
118
+ ```
119
+
120
+ Ruff ignores: `COM812`, `N802-N816`, `UP047` (TypeVar over PEP 695 syntax).
121
+ Pylint disables: `C0415` (lazy imports), `W0603` (globals), `R0911` (many returns).
122
+
123
+ ### Documentation
124
+ ```bash
125
+ pip install -e ".[docs]"
126
+ cd docs && make html # builds to docs/_build/html/
127
+ ```
128
+ - Sphinx with `sphinx-autoapi` (API docs from source), `sphinx_rtd_theme`
129
+ - ReadTheDocs config: `.readthedocs.yaml`
130
+ - Docs source: `docs/` (index, getting_started, user_guide/, api/)
131
+
132
+ ### Configuration
133
+ - `TISSERANDE__DB__URL` — database URL (default: `sqlite+aiosqlite:///tisserande.db`)
134
+ - `TISSERANDE__DB__ECHO` — SQLAlchemy echo (default: `false`)
135
+ - `TISSERANDE__TRACKING__ENABLED` — global enable/disable (default: `true`)
136
+ - `TISSERANDE__TRACKING__BACKEND` — default backend: `local_sync`, `null` (default: `local_sync`)
137
+ - `TISSERANDE__TRACKING__AUTO_CLASSIFY` — heuristic classification (default: `true`)
138
+ - Line length: 110 (ruff), 120 (pylint)
139
+ - Python: 3.13+ required
140
+ - Build: setuptools + setuptools_scm
141
+ - Package manager: pip (or uv)
142
+
143
+ ### CLI Entry Points
144
+ - `tisserande-local` — local DB admin (CRUD for all tables via click)
145
+ - `tisserande-server` — FastAPI/uvicorn server
146
+
147
+ ### CI/CD
148
+ GitHub Actions workflows in `.github/workflows/`:
149
+ - `linting.yml` — ruff + mypy on push/PR to main
150
+ - `testing-and-coverage.yml` — pytest on push/PR + weekly schedule
151
+ - `smoke-test.yml` — daily scheduled pytest run
152
+ - `docs.yml` — Sphinx build on docs/source changes
153
+ - `publish-to-pypi.yml` — trusted publishing on GitHub release
154
+
155
+ ### Dependencies
156
+ - Core: `macon[db]` (provides SQLAlchemy, pydantic, structlog, uuid_utils, anyio, aiosqlite, etc.)
157
+ - Optional: `numpy` (array support), `macon[server]` (FastAPI server), `macon[client]` (HTTP client)
158
+ - Docs: `sphinx`, `sphinx-autoapi`, `sphinx_rtd_theme`, `sphinx-autodoc-typehints`
159
+
160
+ ### Known Limitations
161
+ - **`@track_async` with `LocalSyncBackend`**: Cannot be used inside an already-running event loop because `LocalSyncBackend` internally calls `asyncio.run()` via macon's `local_sync`. A future `LocalAsyncBackend` would resolve this. For now, `@track_async` works when the decorated coroutine is called from synchronous code (e.g., `asyncio.run(my_func(...))`).
162
+
163
+ ### Adding a New Node Type
164
+
165
+ 1. Add value to `NodeType` enum in `models/types.py`
166
+ 2. Add nullable columns to `db/nodes.py` `NodeTable` if needed
167
+ 3. Add FK mapping to `_TYPE_FK_MAP` in `db_oper/nodes.py`
168
+ 4. Add typed Pydantic models (Base/Create/Response) in `models/nodes.py`
169
+ 5. Add heuristic classification in `tracking/inspector.py` `_classify_by_value()`
170
+ 6. Add annotation alias in `tracking/annotations.py`
171
+
172
+ ### Adding a New Type Table
173
+
174
+ 1. Create Pydantic models (Base/Create/Response) in `models/data_types.py` or `models/function_types.py`
175
+ 2. Create ORM table in `db/data_types.py` or `db/function_types.py`
176
+ 3. Create `TableOperations` in `db_oper/`
177
+ 4. Create `LocalOperations` in `local_async/`
178
+ 5. Create `SyncOperations` in `local_sync/`
179
+ 6. Add to `__init__.py` exports in each layer
180
+ 7. Add router and CLI commands
@@ -0,0 +1,229 @@
1
+ Metadata-Version: 2.4
2
+ Name: tisserande
3
+ Version: 0.0.0
4
+ Summary: Execution provenance tracking for Python functions and shell scripts
5
+ Author-email: Eric Charles <echarles@slac.stanford.edu>
6
+ Project-URL: Source, https://github.com/eacharles/tisserande
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Programming Language :: Python
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: POSIX
16
+ Classifier: Typing :: Typed
17
+ Requires-Python: >=3.13
18
+ Description-Content-Type: text/markdown
19
+ Requires-Dist: tables-io
20
+ Requires-Dist: macon[db]
21
+ Provides-Extra: numpy
22
+ Requires-Dist: numpy; extra == "numpy"
23
+ Provides-Extra: server
24
+ Requires-Dist: macon[server]; extra == "server"
25
+ Provides-Extra: client
26
+ Requires-Dist: macon[client]; extra == "client"
27
+ Provides-Extra: dev
28
+ Requires-Dist: tisserande[numpy]; extra == "dev"
29
+ Requires-Dist: tisserande[server]; extra == "dev"
30
+ Requires-Dist: tisserande[client]; extra == "dev"
31
+ Requires-Dist: pytest; extra == "dev"
32
+ Requires-Dist: pytest-asyncio; extra == "dev"
33
+ Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
34
+ Requires-Dist: pytest-timeout>=2.3.1; extra == "dev"
35
+ Requires-Dist: mypy; extra == "dev"
36
+ Requires-Dist: ruff>=0.8.0; extra == "dev"
37
+ Requires-Dist: pylint; extra == "dev"
38
+ Requires-Dist: types-pyyaml>=6.0.12.20240917; extra == "dev"
39
+ Provides-Extra: docs
40
+ Requires-Dist: nbsphinx; extra == "docs"
41
+ Requires-Dist: sphinx; extra == "docs"
42
+ Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
43
+ Requires-Dist: sphinx_rtd_theme; extra == "docs"
44
+ Requires-Dist: sphinx-autoapi; extra == "docs"
45
+ Provides-Extra: all
46
+ Requires-Dist: tisserande[server]; extra == "all"
47
+ Requires-Dist: tisserande[client]; extra == "all"
48
+ Requires-Dist: tisserande[dev]; extra == "all"
49
+ Requires-Dist: tisserande[docs]; extra == "all"
50
+
51
+ # tisserande
52
+
53
+ Execution provenance tracking for Python functions and shell scripts.
54
+
55
+ Tisserande records **what** functions ran, **what** data they consumed and produced, **how long** they took, and **whether** they succeeded — all as a directed acyclic graph (DAG) stored in a database.
56
+
57
+ ## Installation
58
+
59
+ ```bash
60
+ pip install tisserande
61
+ ```
62
+
63
+ For development:
64
+ ```bash
65
+ pip install -e ".[dev]"
66
+ ```
67
+
68
+ ## Quick Start
69
+
70
+ ### 1. Configure tracking
71
+
72
+ ```python
73
+ from tisserande.tracking import configure
74
+
75
+ # Uses in-memory SQLite by default for quick experiments
76
+ configure(db_url="sqlite+aiosqlite:///my_provenance.db")
77
+ ```
78
+
79
+ ### 2. Decorate your functions
80
+
81
+ ```python
82
+ from tisserande.tracking import track
83
+ from tisserande.tracking.annotations import DataFile, Param
84
+
85
+ @track
86
+ def fit_model(
87
+ input_catalog: DataFile[str],
88
+ config_file: DataFile[str],
89
+ learning_rate: Param[float],
90
+ ) -> DataFile[str]:
91
+ """Train a model and write output."""
92
+ # ... your code ...
93
+ return "/data/results/model_output.fits"
94
+
95
+ # Call normally — provenance is recorded automatically
96
+ fit_model("/data/catalogs/train.fits", "/configs/model.yaml", 0.01)
97
+ ```
98
+
99
+ ### 3. Query the provenance
100
+
101
+ ```python
102
+ from tisserande.local_sync import execution, node, edge
103
+
104
+ # Get all executions
105
+ for ex in execution.get_rows():
106
+ print(f"{ex.id_}: status={ex.status}, duration={ex.duration_seconds:.2f}s")
107
+
108
+ # Get all nodes for a specific execution
109
+ nodes = node.filter_rows(filters=[...])
110
+ ```
111
+
112
+ ## Type Annotations
113
+
114
+ Control how arguments are classified with type annotations:
115
+
116
+ ```python
117
+ from tisserande.tracking.annotations import (
118
+ DataFile, # File containing data (e.g., FITS, HDF5, Parquet)
119
+ ConfigFile, # Configuration file (e.g., YAML, JSON, TOML)
120
+ ConfigDict, # Dictionary containing configuration
121
+ Param, # Numeric parameter
122
+ ArrayArg, # Array of values
123
+ ObjectArg, # Python object
124
+ Untracked, # Skip tracking for this argument
125
+ )
126
+ ```
127
+
128
+ Without annotations, tisserande uses heuristics (file extensions, Python types) to classify arguments automatically.
129
+
130
+ ## Tracking Shell Commands
131
+
132
+ ```python
133
+ from tisserande.tracking import track_shell
134
+
135
+ result = track_shell(
136
+ "sextractor input.fits -c config.sex",
137
+ inputs={
138
+ "image": "/data/input.fits",
139
+ "config": "/configs/config.sex",
140
+ },
141
+ outputs={
142
+ "catalog": "/data/output.cat",
143
+ },
144
+ )
145
+ ```
146
+
147
+ ## Async Support
148
+
149
+ ```python
150
+ from tisserande.tracking import track_async
151
+
152
+ @track_async
153
+ async def async_pipeline(data: DataFile[str]) -> DataFile[str]:
154
+ # ... async processing ...
155
+ return "/data/output.fits"
156
+ ```
157
+
158
+ ## Architecture
159
+
160
+ Tisserande models provenance as a DAG:
161
+
162
+ ```
163
+ [input.fits] ──→ [fit_model()] ──→ [output.fits]
164
+ [config.yaml] ─┘
165
+ [lr=0.01] ─────┘
166
+ ```
167
+
168
+ - **Nodes** represent data (files, configs, parameters, arrays, objects) and logic (functions, scripts)
169
+ - **Edges** connect inputs to functions and functions to outputs
170
+ - **Executions** group all nodes/edges from a single function call
171
+
172
+ The database stores:
173
+ - **Type tables**: reusable definitions (e.g., "PythonFunction: fit_model in mymodule")
174
+ - **Node table**: specific instances with runtime values
175
+ - **Edge table**: directed connections between nodes
176
+ - **Execution table**: timing, status, error info per function call
177
+
178
+ ## Database Backends
179
+
180
+ By default, tisserande uses SQLite via SQLAlchemy. Configure any SQLAlchemy-compatible database:
181
+
182
+ ```python
183
+ configure(db_url="postgresql+asyncpg://user:pass@localhost/provenance")
184
+ ```
185
+
186
+ ## REST API
187
+
188
+ Start the server:
189
+
190
+ ```bash
191
+ tisserande-server --port 8080
192
+ ```
193
+
194
+ Provides CRUD endpoints for all tables at `http://localhost:8080/docs`.
195
+
196
+ ## CLI
197
+
198
+ ```bash
199
+ # List executions
200
+ tisserande-local execution get-rows
201
+
202
+ # Get a specific node
203
+ tisserande-local node get-row <node-uuid>
204
+ ```
205
+
206
+ ## Configuration
207
+
208
+ Environment variables (prefix `TISSERANDE__`, nested with `__`):
209
+
210
+ | Variable | Default | Description |
211
+ |----------|---------|-------------|
212
+ | `TISSERANDE__DB__URL` | `sqlite+aiosqlite:///tisserande.db` | Database URL |
213
+ | `TISSERANDE__TRACKING__ENABLED` | `true` | Global tracking toggle |
214
+ | `TISSERANDE__TRACKING__BACKEND` | `local_sync` | Backend: `local_sync` or `null` |
215
+
216
+ ## Testing
217
+
218
+ For tests, use the `NullBackend` to avoid database overhead:
219
+
220
+ ```python
221
+ from tisserande.tracking import configure
222
+ from tisserande.tracking.backends import NullBackend
223
+
224
+ configure(backend=NullBackend())
225
+ ```
226
+
227
+ ## License
228
+
229
+ MIT