notionary 0.2.26__py3-none-any.whl → 0.2.28__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. notionary/__init__.py +5 -20
  2. notionary/blocks/client.py +87 -215
  3. notionary/blocks/enums.py +167 -0
  4. notionary/blocks/rich_text/markdown_rich_text_converter.py +266 -0
  5. notionary/blocks/rich_text/models.py +164 -0
  6. notionary/blocks/rich_text/name_id_resolver/__init__.py +11 -0
  7. notionary/blocks/rich_text/name_id_resolver/database.py +31 -0
  8. notionary/blocks/rich_text/name_id_resolver/page.py +34 -0
  9. notionary/blocks/rich_text/name_id_resolver/person.py +37 -0
  10. notionary/blocks/rich_text/name_id_resolver/port.py +11 -0
  11. notionary/blocks/rich_text/rich_text_markdown_converter.py +132 -0
  12. notionary/blocks/rich_text/rich_text_patterns.py +39 -0
  13. notionary/blocks/schemas.py +746 -0
  14. notionary/comments/client.py +52 -187
  15. notionary/comments/factory.py +40 -0
  16. notionary/comments/models.py +5 -127
  17. notionary/comments/schemas.py +240 -0
  18. notionary/comments/service.py +34 -0
  19. notionary/data_source/http/client.py +11 -0
  20. notionary/data_source/http/data_source_instance_client.py +94 -0
  21. notionary/data_source/properties/models.py +406 -0
  22. notionary/data_source/query/builder.py +429 -0
  23. notionary/data_source/query/resolver.py +114 -0
  24. notionary/data_source/query/schema.py +304 -0
  25. notionary/data_source/query/validator.py +73 -0
  26. notionary/data_source/schemas.py +27 -0
  27. notionary/data_source/service.py +353 -0
  28. notionary/database/client.py +30 -135
  29. notionary/database/database_metadata_update_client.py +19 -0
  30. notionary/database/schemas.py +29 -0
  31. notionary/database/service.py +169 -0
  32. notionary/exceptions/__init__.py +33 -0
  33. notionary/exceptions/api.py +41 -0
  34. notionary/exceptions/base.py +2 -0
  35. notionary/exceptions/block_parsing.py +16 -0
  36. notionary/exceptions/data_source/__init__.py +6 -0
  37. notionary/exceptions/data_source/builder.py +182 -0
  38. notionary/exceptions/data_source/properties.py +34 -0
  39. notionary/exceptions/properties.py +58 -0
  40. notionary/exceptions/search.py +33 -0
  41. notionary/file_upload/client.py +18 -30
  42. notionary/file_upload/models.py +7 -8
  43. notionary/file_upload/{notion_file_upload.py → service.py} +29 -64
  44. notionary/http/client.py +205 -0
  45. notionary/http/models.py +49 -0
  46. notionary/page/blocks/client.py +1 -0
  47. notionary/page/content/factory.py +68 -0
  48. notionary/page/content/markdown/__init__.py +5 -0
  49. notionary/page/content/markdown/builder.py +304 -0
  50. notionary/page/content/markdown/nodes/__init__.py +54 -0
  51. notionary/page/content/markdown/nodes/audio.py +23 -0
  52. notionary/page/content/markdown/nodes/base.py +12 -0
  53. notionary/page/content/markdown/nodes/bookmark.py +25 -0
  54. notionary/page/content/markdown/nodes/breadcrumb.py +14 -0
  55. notionary/page/content/markdown/nodes/bulleted_list.py +18 -0
  56. notionary/page/content/markdown/nodes/callout.py +32 -0
  57. notionary/page/content/markdown/nodes/code.py +30 -0
  58. notionary/page/content/markdown/nodes/columns.py +51 -0
  59. notionary/page/content/markdown/nodes/divider.py +14 -0
  60. notionary/page/content/markdown/nodes/embed.py +23 -0
  61. notionary/page/content/markdown/nodes/equation.py +19 -0
  62. notionary/page/content/markdown/nodes/file.py +23 -0
  63. notionary/page/content/markdown/nodes/heading.py +16 -0
  64. notionary/page/content/markdown/nodes/image.py +23 -0
  65. notionary/page/content/markdown/nodes/mixins/caption.py +12 -0
  66. notionary/page/content/markdown/nodes/numbered_list.py +15 -0
  67. notionary/page/content/markdown/nodes/paragraph.py +14 -0
  68. notionary/page/content/markdown/nodes/pdf.py +23 -0
  69. notionary/page/content/markdown/nodes/quote.py +15 -0
  70. notionary/page/content/markdown/nodes/space.py +14 -0
  71. notionary/page/content/markdown/nodes/table.py +45 -0
  72. notionary/page/content/markdown/nodes/table_of_contents.py +14 -0
  73. notionary/page/content/markdown/nodes/todo.py +22 -0
  74. notionary/page/content/markdown/nodes/toggle.py +28 -0
  75. notionary/page/content/markdown/nodes/toggleable_heading.py +35 -0
  76. notionary/page/content/markdown/nodes/video.py +23 -0
  77. notionary/page/content/parser/context.py +49 -0
  78. notionary/page/content/parser/factory.py +219 -0
  79. notionary/page/content/parser/parsers/__init__.py +60 -0
  80. notionary/page/content/parser/parsers/audio.py +40 -0
  81. notionary/page/content/parser/parsers/base.py +30 -0
  82. notionary/page/content/parser/parsers/bookmark.py +33 -0
  83. notionary/page/content/parser/parsers/breadcrumb.py +33 -0
  84. notionary/page/content/parser/parsers/bulleted_list.py +41 -0
  85. notionary/page/content/parser/parsers/callout.py +129 -0
  86. notionary/page/content/parser/parsers/caption.py +55 -0
  87. notionary/page/content/parser/parsers/code.py +81 -0
  88. notionary/page/content/parser/parsers/column.py +117 -0
  89. notionary/page/content/parser/parsers/column_list.py +81 -0
  90. notionary/page/content/parser/parsers/divider.py +33 -0
  91. notionary/page/content/parser/parsers/embed.py +33 -0
  92. notionary/page/content/parser/parsers/equation.py +65 -0
  93. notionary/page/content/parser/parsers/file.py +42 -0
  94. notionary/page/content/parser/parsers/heading.py +58 -0
  95. notionary/page/content/parser/parsers/image.py +42 -0
  96. notionary/page/content/parser/parsers/numbered_list.py +45 -0
  97. notionary/page/content/parser/parsers/paragraph.py +36 -0
  98. notionary/page/content/parser/parsers/pdf.py +42 -0
  99. notionary/page/content/parser/parsers/quote.py +65 -0
  100. notionary/page/content/parser/parsers/space.py +35 -0
  101. notionary/page/content/parser/parsers/table.py +144 -0
  102. notionary/page/content/parser/parsers/table_of_contents.py +32 -0
  103. notionary/page/content/parser/parsers/todo.py +58 -0
  104. notionary/page/content/parser/parsers/toggle.py +127 -0
  105. notionary/page/content/parser/parsers/toggleable_heading.py +150 -0
  106. notionary/page/content/parser/parsers/video.py +42 -0
  107. notionary/page/content/parser/post_processing/handlers/__init__.py +5 -0
  108. notionary/page/content/parser/post_processing/handlers/rich_text_length.py +93 -0
  109. notionary/page/content/parser/post_processing/handlers/rich_text_length_truncation.py +93 -0
  110. notionary/page/content/parser/post_processing/port.py +9 -0
  111. notionary/page/content/parser/post_processing/service.py +16 -0
  112. notionary/page/content/parser/pre_processsing/handlers/__init__.py +9 -0
  113. notionary/page/content/parser/pre_processsing/handlers/column_syntax.py +80 -0
  114. notionary/page/content/parser/pre_processsing/handlers/port.py +7 -0
  115. notionary/page/content/parser/pre_processsing/handlers/whitespace.py +68 -0
  116. notionary/page/content/parser/pre_processsing/service.py +15 -0
  117. notionary/page/content/parser/service.py +69 -0
  118. notionary/page/content/renderer/context.py +48 -0
  119. notionary/page/content/renderer/factory.py +240 -0
  120. notionary/page/content/renderer/post_processing/handlers/__init__.py +5 -0
  121. notionary/page/content/renderer/post_processing/handlers/numbered_list_placeholdere.py +62 -0
  122. notionary/page/content/renderer/post_processing/port.py +7 -0
  123. notionary/page/content/renderer/post_processing/service.py +15 -0
  124. notionary/page/content/renderer/renderers/__init__.py +57 -0
  125. notionary/page/content/renderer/renderers/audio.py +31 -0
  126. notionary/page/content/renderer/renderers/base.py +31 -0
  127. notionary/page/content/renderer/renderers/bookmark.py +25 -0
  128. notionary/page/content/renderer/renderers/breadcrumb.py +21 -0
  129. notionary/page/content/renderer/renderers/bulleted_list.py +48 -0
  130. notionary/page/content/renderer/renderers/callout.py +65 -0
  131. notionary/page/content/renderer/renderers/captioned_block.py +58 -0
  132. notionary/page/content/renderer/renderers/code.py +34 -0
  133. notionary/page/content/renderer/renderers/column.py +44 -0
  134. notionary/page/content/renderer/renderers/column_list.py +31 -0
  135. notionary/page/content/renderer/renderers/divider.py +22 -0
  136. notionary/page/content/renderer/renderers/embed.py +25 -0
  137. notionary/page/content/renderer/renderers/equation.py +37 -0
  138. notionary/page/content/renderer/renderers/fallback.py +24 -0
  139. notionary/page/content/renderer/renderers/file.py +40 -0
  140. notionary/page/content/renderer/renderers/heading.py +69 -0
  141. notionary/page/content/renderer/renderers/image.py +31 -0
  142. notionary/page/content/renderer/renderers/numbered_list.py +41 -0
  143. notionary/page/content/renderer/renderers/paragraph.py +40 -0
  144. notionary/page/content/renderer/renderers/pdf.py +31 -0
  145. notionary/page/content/renderer/renderers/quote.py +49 -0
  146. notionary/page/content/renderer/renderers/table.py +115 -0
  147. notionary/page/content/renderer/renderers/table_of_contents.py +26 -0
  148. notionary/page/content/renderer/renderers/table_row.py +17 -0
  149. notionary/page/content/renderer/renderers/todo.py +56 -0
  150. notionary/page/content/renderer/renderers/toggle.py +53 -0
  151. notionary/page/content/renderer/renderers/toggleable_heading.py +78 -0
  152. notionary/page/content/renderer/renderers/video.py +31 -0
  153. notionary/page/content/renderer/service.py +50 -0
  154. notionary/page/content/service.py +65 -0
  155. notionary/page/content/syntax/models.py +68 -0
  156. notionary/page/content/syntax/service.py +453 -0
  157. notionary/page/page_context.py +7 -16
  158. notionary/page/page_http_client.py +15 -0
  159. notionary/page/page_metadata_update_client.py +19 -0
  160. notionary/page/properties/client.py +144 -0
  161. notionary/page/properties/factory.py +26 -0
  162. notionary/page/properties/models.py +307 -0
  163. notionary/page/properties/service.py +257 -0
  164. notionary/page/schemas.py +13 -0
  165. notionary/page/service.py +222 -0
  166. notionary/shared/entity/client.py +29 -0
  167. notionary/shared/entity/dto_parsers.py +53 -0
  168. notionary/shared/entity/entity_metadata_update_client.py +41 -0
  169. notionary/shared/entity/schemas.py +45 -0
  170. notionary/shared/entity/service.py +171 -0
  171. notionary/shared/models/cover.py +20 -0
  172. notionary/shared/models/file.py +21 -0
  173. notionary/shared/models/icon.py +28 -0
  174. notionary/shared/models/parent.py +41 -0
  175. notionary/shared/properties/type.py +30 -0
  176. notionary/user/__init__.py +4 -8
  177. notionary/user/base.py +89 -0
  178. notionary/user/bot.py +70 -0
  179. notionary/user/client.py +22 -111
  180. notionary/user/person.py +41 -0
  181. notionary/user/schemas.py +67 -0
  182. notionary/user/service.py +65 -0
  183. notionary/utils/async_retry.py +39 -0
  184. notionary/utils/date.py +51 -0
  185. notionary/utils/fuzzy.py +56 -0
  186. notionary/{util/logging_mixin.py → utils/mixins/logging.py} +4 -16
  187. notionary/utils/pagination.py +50 -0
  188. notionary/utils/singleton.py +13 -0
  189. notionary/utils/uuid_utils.py +20 -0
  190. notionary/workspace/__init__.py +3 -0
  191. notionary/workspace/client.py +62 -0
  192. notionary/workspace/query/builder.py +60 -0
  193. notionary/workspace/query/models.py +60 -0
  194. notionary/workspace/query/service.py +93 -0
  195. notionary/workspace/schemas.py +21 -0
  196. notionary/workspace/service.py +116 -0
  197. {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info}/METADATA +54 -49
  198. notionary-0.2.28.dist-info/RECORD +200 -0
  199. {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info}/WHEEL +1 -1
  200. {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info/licenses}/LICENSE +9 -9
  201. notionary/base_notion_client.py +0 -219
  202. notionary/blocks/__init__.py +0 -5
  203. notionary/blocks/_bootstrap.py +0 -271
  204. notionary/blocks/audio/__init__.py +0 -11
  205. notionary/blocks/audio/audio_element.py +0 -158
  206. notionary/blocks/audio/audio_markdown_node.py +0 -24
  207. notionary/blocks/audio/audio_models.py +0 -10
  208. notionary/blocks/base_block_element.py +0 -42
  209. notionary/blocks/bookmark/__init__.py +0 -12
  210. notionary/blocks/bookmark/bookmark_element.py +0 -83
  211. notionary/blocks/bookmark/bookmark_markdown_node.py +0 -28
  212. notionary/blocks/bookmark/bookmark_models.py +0 -15
  213. notionary/blocks/breadcrumbs/__init__.py +0 -15
  214. notionary/blocks/breadcrumbs/breadcrumb_element.py +0 -39
  215. notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py +0 -13
  216. notionary/blocks/breadcrumbs/breadcrumb_models.py +0 -12
  217. notionary/blocks/bulleted_list/__init__.py +0 -15
  218. notionary/blocks/bulleted_list/bulleted_list_element.py +0 -74
  219. notionary/blocks/bulleted_list/bulleted_list_markdown_node.py +0 -20
  220. notionary/blocks/bulleted_list/bulleted_list_models.py +0 -17
  221. notionary/blocks/callout/__init__.py +0 -12
  222. notionary/blocks/callout/callout_element.py +0 -99
  223. notionary/blocks/callout/callout_markdown_node.py +0 -19
  224. notionary/blocks/callout/callout_models.py +0 -33
  225. notionary/blocks/child_database/__init__.py +0 -14
  226. notionary/blocks/child_database/child_database_element.py +0 -59
  227. notionary/blocks/child_database/child_database_models.py +0 -12
  228. notionary/blocks/child_page/__init__.py +0 -9
  229. notionary/blocks/child_page/child_page_element.py +0 -94
  230. notionary/blocks/child_page/child_page_models.py +0 -12
  231. notionary/blocks/code/__init__.py +0 -11
  232. notionary/blocks/code/code_element.py +0 -149
  233. notionary/blocks/code/code_markdown_node.py +0 -80
  234. notionary/blocks/code/code_models.py +0 -94
  235. notionary/blocks/column/__init__.py +0 -25
  236. notionary/blocks/column/column_element.py +0 -65
  237. notionary/blocks/column/column_list_element.py +0 -52
  238. notionary/blocks/column/column_list_markdown_node.py +0 -34
  239. notionary/blocks/column/column_markdown_node.py +0 -42
  240. notionary/blocks/column/column_models.py +0 -26
  241. notionary/blocks/divider/__init__.py +0 -12
  242. notionary/blocks/divider/divider_element.py +0 -41
  243. notionary/blocks/divider/divider_markdown_node.py +0 -11
  244. notionary/blocks/divider/divider_models.py +0 -12
  245. notionary/blocks/embed/__init__.py +0 -12
  246. notionary/blocks/embed/embed_element.py +0 -98
  247. notionary/blocks/embed/embed_markdown_node.py +0 -19
  248. notionary/blocks/embed/embed_models.py +0 -14
  249. notionary/blocks/equation/__init__.py +0 -13
  250. notionary/blocks/equation/equation_element.py +0 -133
  251. notionary/blocks/equation/equation_element_markdown_node.py +0 -23
  252. notionary/blocks/equation/equation_models.py +0 -11
  253. notionary/blocks/file/__init__.py +0 -23
  254. notionary/blocks/file/file_element.py +0 -133
  255. notionary/blocks/file/file_element_markdown_node.py +0 -24
  256. notionary/blocks/file/file_element_models.py +0 -39
  257. notionary/blocks/heading/__init__.py +0 -19
  258. notionary/blocks/heading/heading_element.py +0 -112
  259. notionary/blocks/heading/heading_markdown_node.py +0 -16
  260. notionary/blocks/heading/heading_models.py +0 -29
  261. notionary/blocks/image_block/__init__.py +0 -11
  262. notionary/blocks/image_block/image_element.py +0 -130
  263. notionary/blocks/image_block/image_markdown_node.py +0 -25
  264. notionary/blocks/image_block/image_models.py +0 -10
  265. notionary/blocks/markdown/markdown_builder.py +0 -525
  266. notionary/blocks/markdown/markdown_document_model.py +0 -0
  267. notionary/blocks/markdown/markdown_node.py +0 -25
  268. notionary/blocks/mixins/captions/__init__.py +0 -4
  269. notionary/blocks/mixins/captions/caption_markdown_node_mixin.py +0 -31
  270. notionary/blocks/mixins/captions/caption_mixin.py +0 -92
  271. notionary/blocks/mixins/file_upload/__init__.py +0 -3
  272. notionary/blocks/mixins/file_upload/file_upload_mixin.py +0 -320
  273. notionary/blocks/models.py +0 -174
  274. notionary/blocks/numbered_list/__init__.py +0 -16
  275. notionary/blocks/numbered_list/numbered_list_element.py +0 -65
  276. notionary/blocks/numbered_list/numbered_list_markdown_node.py +0 -17
  277. notionary/blocks/numbered_list/numbered_list_models.py +0 -17
  278. notionary/blocks/paragraph/__init__.py +0 -15
  279. notionary/blocks/paragraph/paragraph_element.py +0 -58
  280. notionary/blocks/paragraph/paragraph_markdown_node.py +0 -16
  281. notionary/blocks/paragraph/paragraph_models.py +0 -16
  282. notionary/blocks/pdf/__init__.py +0 -11
  283. notionary/blocks/pdf/pdf_element.py +0 -146
  284. notionary/blocks/pdf/pdf_markdown_node.py +0 -24
  285. notionary/blocks/pdf/pdf_models.py +0 -11
  286. notionary/blocks/quote/__init__.py +0 -14
  287. notionary/blocks/quote/quote_element.py +0 -75
  288. notionary/blocks/quote/quote_markdown_node.py +0 -16
  289. notionary/blocks/quote/quote_models.py +0 -18
  290. notionary/blocks/registry/__init__.py +0 -3
  291. notionary/blocks/registry/block_registry.py +0 -150
  292. notionary/blocks/rich_text/__init__.py +0 -33
  293. notionary/blocks/rich_text/rich_text_models.py +0 -221
  294. notionary/blocks/rich_text/text_inline_formatter.py +0 -456
  295. notionary/blocks/syntax_prompt_builder.py +0 -137
  296. notionary/blocks/table/__init__.py +0 -19
  297. notionary/blocks/table/table_element.py +0 -225
  298. notionary/blocks/table/table_markdown_node.py +0 -42
  299. notionary/blocks/table/table_models.py +0 -28
  300. notionary/blocks/table_of_contents/__init__.py +0 -17
  301. notionary/blocks/table_of_contents/table_of_contents_element.py +0 -80
  302. notionary/blocks/table_of_contents/table_of_contents_markdown_node.py +0 -21
  303. notionary/blocks/table_of_contents/table_of_contents_models.py +0 -18
  304. notionary/blocks/todo/__init__.py +0 -12
  305. notionary/blocks/todo/todo_element.py +0 -81
  306. notionary/blocks/todo/todo_markdown_node.py +0 -21
  307. notionary/blocks/todo/todo_models.py +0 -18
  308. notionary/blocks/toggle/__init__.py +0 -12
  309. notionary/blocks/toggle/toggle_element.py +0 -112
  310. notionary/blocks/toggle/toggle_markdown_node.py +0 -31
  311. notionary/blocks/toggle/toggle_models.py +0 -17
  312. notionary/blocks/toggleable_heading/__init__.py +0 -11
  313. notionary/blocks/toggleable_heading/toggleable_heading_element.py +0 -115
  314. notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py +0 -34
  315. notionary/blocks/types.py +0 -130
  316. notionary/blocks/video/__init__.py +0 -11
  317. notionary/blocks/video/video_element.py +0 -187
  318. notionary/blocks/video/video_element_models.py +0 -10
  319. notionary/blocks/video/video_markdown_node.py +0 -26
  320. notionary/comments/__init__.py +0 -26
  321. notionary/database/__init__.py +0 -4
  322. notionary/database/database.py +0 -480
  323. notionary/database/database_filter_builder.py +0 -173
  324. notionary/database/database_provider.py +0 -227
  325. notionary/database/exceptions.py +0 -13
  326. notionary/database/factory.py +0 -0
  327. notionary/database/models.py +0 -337
  328. notionary/database/notion_database.py +0 -487
  329. notionary/file_upload/__init__.py +0 -7
  330. notionary/page/client.py +0 -124
  331. notionary/page/markdown_whitespace_processor.py +0 -129
  332. notionary/page/models.py +0 -322
  333. notionary/page/notion_page.py +0 -674
  334. notionary/page/page_content_deleting_service.py +0 -117
  335. notionary/page/page_content_writer.py +0 -80
  336. notionary/page/property_formatter.py +0 -99
  337. notionary/page/reader/handler/__init__.py +0 -19
  338. notionary/page/reader/handler/base_block_renderer.py +0 -44
  339. notionary/page/reader/handler/block_processing_context.py +0 -35
  340. notionary/page/reader/handler/block_rendering_context.py +0 -48
  341. notionary/page/reader/handler/column_list_renderer.py +0 -51
  342. notionary/page/reader/handler/column_renderer.py +0 -60
  343. notionary/page/reader/handler/equation_renderer.py +0 -0
  344. notionary/page/reader/handler/line_renderer.py +0 -73
  345. notionary/page/reader/handler/numbered_list_renderer.py +0 -85
  346. notionary/page/reader/handler/toggle_renderer.py +0 -69
  347. notionary/page/reader/handler/toggleable_heading_renderer.py +0 -89
  348. notionary/page/reader/page_content_retriever.py +0 -81
  349. notionary/page/search_filter_builder.py +0 -132
  350. notionary/page/utils.py +0 -60
  351. notionary/page/writer/handler/__init__.py +0 -24
  352. notionary/page/writer/handler/code_handler.py +0 -72
  353. notionary/page/writer/handler/column_handler.py +0 -141
  354. notionary/page/writer/handler/column_list_handler.py +0 -139
  355. notionary/page/writer/handler/equation_handler.py +0 -74
  356. notionary/page/writer/handler/line_handler.py +0 -35
  357. notionary/page/writer/handler/line_processing_context.py +0 -54
  358. notionary/page/writer/handler/regular_line_handler.py +0 -86
  359. notionary/page/writer/handler/table_handler.py +0 -66
  360. notionary/page/writer/handler/toggle_handler.py +0 -159
  361. notionary/page/writer/handler/toggleable_heading_handler.py +0 -174
  362. notionary/page/writer/markdown_to_notion_converter.py +0 -139
  363. notionary/page/writer/markdown_to_notion_converter_context.py +0 -30
  364. notionary/page/writer/markdown_to_notion_text_length_post_processor.py +0 -0
  365. notionary/page/writer/notion_text_length_processor.py +0 -150
  366. notionary/schemas/__init__.py +0 -3
  367. notionary/schemas/base.py +0 -73
  368. notionary/shared/__init__.py +0 -3
  369. notionary/shared/name_to_id_resolver.py +0 -203
  370. notionary/telemetry/__init__.py +0 -19
  371. notionary/telemetry/service.py +0 -136
  372. notionary/telemetry/views.py +0 -73
  373. notionary/user/base_notion_user.py +0 -53
  374. notionary/user/models.py +0 -84
  375. notionary/user/notion_bot_user.py +0 -226
  376. notionary/user/notion_user.py +0 -255
  377. notionary/user/notion_user_manager.py +0 -101
  378. notionary/util/__init__.py +0 -15
  379. notionary/util/concurrency_limiter.py +0 -0
  380. notionary/util/factory_decorator.py +0 -0
  381. notionary/util/factory_only.py +0 -37
  382. notionary/util/fuzzy.py +0 -75
  383. notionary/util/page_id_utils.py +0 -27
  384. notionary/util/singleton.py +0 -18
  385. notionary/util/singleton_metaclass.py +0 -22
  386. notionary/workspace.py +0 -105
  387. notionary-0.2.26.dist-info/RECORD +0 -202
@@ -0,0 +1,746 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Annotated, Literal
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+ from notionary.blocks.enums import BlockColor, BlockType, CodeLanguage, FileType
8
+ from notionary.blocks.rich_text.models import RichText
9
+ from notionary.shared.models.icon import Icon
10
+ from notionary.shared.models.parent import Parent
11
+ from notionary.user.schemas import PartialUserDto
12
+
13
+ # ============================================================================
14
+ # File-related models
15
+ # ============================================================================
16
+
17
+
18
+ class ExternalFile(BaseModel):
19
+ model_config = ConfigDict(from_attributes=True)
20
+ url: str
21
+
22
+
23
+ class NotionHostedFile(BaseModel):
24
+ model_config = ConfigDict(from_attributes=True)
25
+ url: str
26
+ expiry_time: str
27
+
28
+
29
+ class FileUploadFile(BaseModel):
30
+ model_config = ConfigDict(from_attributes=True)
31
+ id: str
32
+
33
+
34
+ class FileData(BaseModel):
35
+ model_config = ConfigDict(from_attributes=True)
36
+ caption: list[RichText] = Field(default_factory=list)
37
+ type: FileType
38
+ external: ExternalFile | None = None
39
+ file: NotionHostedFile | None = None
40
+ file_upload: FileUploadFile | None = None
41
+ name: str | None = None
42
+
43
+
44
+ # ============================================================================
45
+ # Base Block
46
+ # ============================================================================
47
+
48
+
49
+ class BaseBlock(BaseModel):
50
+ id: str
51
+ parent: Parent | None = None
52
+ type: BlockType
53
+ created_time: str
54
+ last_edited_time: str
55
+ created_by: PartialUserDto
56
+ last_edited_by: PartialUserDto
57
+ archived: bool = False
58
+ in_trash: bool = False
59
+ has_children: bool = False
60
+ children: list[Block] | None = None
61
+
62
+
63
+ # ============================================================================
64
+ # Audio Block
65
+ # ============================================================================
66
+
67
+
68
+ class AudioData(BaseModel):
69
+ model_config = ConfigDict(from_attributes=True)
70
+ caption: list[RichText] = Field(default_factory=list)
71
+ type: FileType
72
+ external: ExternalFile | None = None
73
+ file: NotionHostedFile | None = None
74
+ file_upload: FileUploadFile | None = None
75
+ name: str | None = None
76
+
77
+
78
+ class AudioBlock(BaseBlock):
79
+ type: Literal[BlockType.AUDIO] = BlockType.AUDIO
80
+ audio: AudioData
81
+
82
+
83
+ class CreateAudioBlock(BaseModel):
84
+ type: Literal[BlockType.AUDIO] = BlockType.AUDIO
85
+ audio: AudioData
86
+
87
+
88
+ # ============================================================================
89
+ # Bookmark Block
90
+ # ============================================================================
91
+
92
+
93
+ class BookmarkData(BaseModel):
94
+ caption: list[RichText] = Field(default_factory=list)
95
+ url: str
96
+
97
+
98
+ class BookmarkBlock(BaseBlock):
99
+ type: Literal[BlockType.BOOKMARK] = BlockType.BOOKMARK
100
+ bookmark: BookmarkData
101
+
102
+
103
+ class CreateBookmarkBlock(BaseModel):
104
+ type: Literal[BlockType.BOOKMARK] = BlockType.BOOKMARK
105
+ bookmark: BookmarkData
106
+
107
+
108
+ # ============================================================================
109
+ # Breadcrumb Block
110
+ # ============================================================================
111
+
112
+
113
+ class BreadcrumbData(BaseModel):
114
+ pass
115
+
116
+
117
+ class BreadcrumbBlock(BaseBlock):
118
+ type: Literal[BlockType.BREADCRUMB] = BlockType.BREADCRUMB
119
+ breadcrumb: BreadcrumbData
120
+
121
+
122
+ class CreateBreadcrumbBlock(BaseModel):
123
+ type: Literal[BlockType.BREADCRUMB] = BlockType.BREADCRUMB
124
+ breadcrumb: BreadcrumbData
125
+
126
+
127
+ # ============================================================================
128
+ # Bulleted List Item Block
129
+ # ============================================================================
130
+
131
+
132
+ class BulletedListItemData(BaseModel):
133
+ rich_text: list[RichText]
134
+ color: BlockColor = BlockColor.DEFAULT
135
+
136
+
137
+ class BulletedListItemBlock(BaseBlock):
138
+ type: Literal[BlockType.BULLETED_LIST_ITEM] = BlockType.BULLETED_LIST_ITEM
139
+ bulleted_list_item: BulletedListItemData
140
+
141
+
142
+ class CreateBulletedListItemBlock(BaseModel):
143
+ type: Literal[BlockType.BULLETED_LIST_ITEM] = BlockType.BULLETED_LIST_ITEM
144
+ bulleted_list_item: BulletedListItemData
145
+
146
+
147
+ # ============================================================================
148
+ # Callout Block
149
+ # ============================================================================
150
+
151
+
152
+ class BaseCalloutData(BaseModel):
153
+ rich_text: list[RichText]
154
+ color: BlockColor = BlockColor.DEFAULT
155
+ icon: Icon | None = None
156
+
157
+
158
+ class CalloutData(BaseCalloutData):
159
+ children: list[Block] | None = None
160
+
161
+
162
+ class CalloutBlock(BaseBlock):
163
+ type: Literal[BlockType.CALLOUT] = BlockType.CALLOUT
164
+ callout: CalloutData
165
+
166
+
167
+ class CreateCalloutData(BaseCalloutData):
168
+ children: list[BlockCreatePayload] | None = None
169
+
170
+
171
+ class CreateCalloutBlock(BaseModel):
172
+ type: Literal[BlockType.CALLOUT] = BlockType.CALLOUT
173
+ callout: CreateCalloutData
174
+
175
+
176
+ # ============================================================================
177
+ # Child Page Block
178
+ # ============================================================================
179
+
180
+
181
+ class ChildPageData(BaseModel):
182
+ title: str
183
+
184
+
185
+ class ChildPageBlock(BaseBlock):
186
+ type: Literal[BlockType.CHILD_PAGE] = BlockType.CHILD_PAGE
187
+ child_page: ChildPageData
188
+
189
+
190
+ class CreateChildPageBlock(BaseModel):
191
+ type: Literal[BlockType.CHILD_PAGE] = BlockType.CHILD_PAGE
192
+ child_page: ChildPageData
193
+
194
+
195
+ # ============================================================================
196
+ # Child Database Block
197
+ # ============================================================================
198
+
199
+
200
+ class ChildDatabaseData(BaseModel):
201
+ title: str
202
+
203
+
204
+ class ChildDatabaseBlock(BaseBlock):
205
+ type: Literal[BlockType.CHILD_DATABASE] = BlockType.CHILD_DATABASE
206
+ child_database: ChildDatabaseData
207
+
208
+
209
+ class CreateChildDatabaseBlock(BaseModel):
210
+ type: Literal[BlockType.CHILD_DATABASE] = BlockType.CHILD_DATABASE
211
+ child_database: ChildDatabaseData
212
+
213
+
214
+ # ============================================================================
215
+ # Code Block
216
+ # ============================================================================
217
+
218
+
219
+ class CodeData(BaseModel):
220
+ caption: list[RichText] = Field(default_factory=list)
221
+ rich_text: list[RichText]
222
+ language: CodeLanguage = CodeLanguage.PLAIN_TEXT
223
+
224
+ model_config = ConfigDict(arbitrary_types_allowed=True)
225
+
226
+
227
+ class CodeBlock(BaseBlock):
228
+ type: Literal[BlockType.CODE] = BlockType.CODE
229
+ code: CodeData
230
+
231
+
232
+ class CreateCodeBlock(BaseModel):
233
+ type: Literal[BlockType.CODE] = BlockType.CODE
234
+ code: CodeData
235
+
236
+
237
+ # ============================================================================
238
+ # Column and Column List Blocks
239
+ # ============================================================================
240
+
241
+
242
+ class BaseColumnData(BaseModel):
243
+ width_ratio: float | None = None
244
+
245
+
246
+ class ColumnData(BaseColumnData):
247
+ children: list[Block] = Field(default_factory=list)
248
+
249
+
250
+ class ColumnBlock(BaseBlock):
251
+ type: Literal[BlockType.COLUMN] = BlockType.COLUMN
252
+ column: ColumnData
253
+
254
+
255
+ class CreateColumnData(BaseColumnData):
256
+ children: list[BlockCreatePayload] = Field(default_factory=list)
257
+
258
+
259
+ class CreateColumnBlock(BaseModel):
260
+ type: Literal[BlockType.COLUMN] = BlockType.COLUMN
261
+ column: CreateColumnData
262
+
263
+
264
+ class ColumnListData(BaseModel):
265
+ children: list[ColumnBlock] = Field(default_factory=list)
266
+
267
+
268
+ class ColumnListBlock(BaseBlock):
269
+ type: Literal[BlockType.COLUMN_LIST] = BlockType.COLUMN_LIST
270
+ column_list: ColumnListData
271
+
272
+
273
+ class CreateColumnListData(BaseModel):
274
+ children: list[CreateColumnBlock] = Field(default_factory=list)
275
+
276
+
277
+ class CreateColumnListBlock(BaseModel):
278
+ type: Literal[BlockType.COLUMN_LIST] = BlockType.COLUMN_LIST
279
+ column_list: CreateColumnListData
280
+
281
+
282
+ # ============================================================================
283
+ # Divider Block
284
+ # ============================================================================
285
+
286
+
287
+ class DividerData(BaseModel):
288
+ pass
289
+
290
+
291
+ class DividerBlock(BaseBlock):
292
+ type: Literal[BlockType.DIVIDER] = BlockType.DIVIDER
293
+ divider: DividerData
294
+
295
+
296
+ class CreateDividerBlock(BaseModel):
297
+ type: Literal[BlockType.DIVIDER] = BlockType.DIVIDER
298
+ divider: DividerData
299
+
300
+
301
+ # ============================================================================
302
+ # Embed Block
303
+ # ============================================================================
304
+
305
+
306
+ class EmbedData(BaseModel):
307
+ url: str
308
+ caption: list[RichText] = Field(default_factory=list)
309
+
310
+
311
+ class EmbedBlock(BaseBlock):
312
+ type: Literal[BlockType.EMBED] = BlockType.EMBED
313
+ embed: EmbedData
314
+
315
+
316
+ class CreateEmbedBlock(BaseModel):
317
+ type: Literal[BlockType.EMBED] = BlockType.EMBED
318
+ embed: EmbedData
319
+
320
+
321
+ # ============================================================================
322
+ # Equation Block
323
+ # ============================================================================
324
+
325
+
326
+ class EquationData(BaseModel):
327
+ expression: str
328
+
329
+
330
+ class EquationBlock(BaseBlock):
331
+ type: Literal[BlockType.EQUATION] = BlockType.EQUATION
332
+ equation: EquationData
333
+
334
+
335
+ class CreateEquationBlock(BaseModel):
336
+ type: Literal[BlockType.EQUATION] = BlockType.EQUATION
337
+ equation: EquationData
338
+
339
+
340
+ # ============================================================================
341
+ # File Block
342
+ # ============================================================================
343
+
344
+
345
+ class FileBlock(BaseBlock):
346
+ type: Literal[BlockType.FILE] = BlockType.FILE
347
+ file: FileData
348
+
349
+
350
+ class CreateFileBlock(BaseModel):
351
+ type: Literal[BlockType.FILE] = BlockType.FILE
352
+ file: FileData
353
+
354
+
355
+ # ============================================================================
356
+ # Heading Blocks
357
+ # ============================================================================
358
+
359
+
360
+ class BaseHeadingData(BaseModel):
361
+ rich_text: list[RichText]
362
+ color: BlockColor = BlockColor.DEFAULT
363
+ is_toggleable: bool = False
364
+
365
+
366
+ class HeadingData(BaseHeadingData):
367
+ children: list[Block] | None = None
368
+
369
+
370
+ class CreateHeadingData(BaseHeadingData):
371
+ children: list[BlockCreatePayload] | None = None
372
+
373
+
374
+ class Heading1Block(BaseBlock):
375
+ type: Literal[BlockType.HEADING_1] = BlockType.HEADING_1
376
+ heading_1: HeadingData
377
+
378
+
379
+ class Heading2Block(BaseBlock):
380
+ type: Literal[BlockType.HEADING_2] = BlockType.HEADING_2
381
+ heading_2: HeadingData
382
+
383
+
384
+ class Heading3Block(BaseBlock):
385
+ type: Literal[BlockType.HEADING_3] = BlockType.HEADING_3
386
+ heading_3: HeadingData
387
+
388
+
389
+ class CreateHeading1Block(BaseModel):
390
+ type: Literal[BlockType.HEADING_1] = BlockType.HEADING_1
391
+ heading_1: CreateHeadingData
392
+
393
+
394
+ class CreateHeading2Block(BaseModel):
395
+ type: Literal[BlockType.HEADING_2] = BlockType.HEADING_2
396
+ heading_2: CreateHeadingData
397
+
398
+
399
+ class CreateHeading3Block(BaseModel):
400
+ type: Literal[BlockType.HEADING_3] = BlockType.HEADING_3
401
+ heading_3: CreateHeadingData
402
+
403
+
404
+ CreateHeadingBlock = CreateHeading1Block | CreateHeading2Block | CreateHeading3Block
405
+
406
+ # ============================================================================
407
+ # Image Block
408
+ # ============================================================================
409
+
410
+
411
+ class ImageData(BaseModel):
412
+ model_config = ConfigDict(from_attributes=True)
413
+ caption: list[RichText] = Field(default_factory=list)
414
+ type: FileType
415
+ external: ExternalFile | None = None
416
+ file: NotionHostedFile | None = None
417
+ file_upload: FileUploadFile | None = None
418
+ name: str | None = None
419
+
420
+
421
+ class ImageBlock(BaseBlock):
422
+ type: Literal[BlockType.IMAGE] = BlockType.IMAGE
423
+ image: ImageData
424
+
425
+
426
+ class CreateImageBlock(BaseModel):
427
+ type: Literal[BlockType.IMAGE] = BlockType.IMAGE
428
+ image: ImageData
429
+
430
+
431
+ # ============================================================================
432
+ # Numbered List Item Block
433
+ # ============================================================================
434
+
435
+
436
+ class NumberedListItemData(BaseModel):
437
+ rich_text: list[RichText]
438
+ color: BlockColor = BlockColor.DEFAULT
439
+
440
+
441
+ class NumberedListItemBlock(BaseBlock):
442
+ type: Literal[BlockType.NUMBERED_LIST_ITEM] = BlockType.NUMBERED_LIST_ITEM
443
+ numbered_list_item: NumberedListItemData
444
+
445
+
446
+ class CreateNumberedListItemBlock(BaseModel):
447
+ type: Literal[BlockType.NUMBERED_LIST_ITEM] = BlockType.NUMBERED_LIST_ITEM
448
+ numbered_list_item: NumberedListItemData
449
+
450
+
451
+ # ============================================================================
452
+ # Paragraph Block
453
+ # ============================================================================
454
+
455
+
456
+ class ParagraphData(BaseModel):
457
+ rich_text: list[RichText]
458
+ color: BlockColor = BlockColor.DEFAULT
459
+
460
+
461
+ class ParagraphBlock(BaseBlock):
462
+ type: Literal[BlockType.PARAGRAPH] = BlockType.PARAGRAPH
463
+ paragraph: ParagraphData
464
+
465
+
466
+ class CreateParagraphBlock(BaseModel):
467
+ type: Literal[BlockType.PARAGRAPH] = BlockType.PARAGRAPH
468
+ paragraph: ParagraphData
469
+
470
+
471
+ # ============================================================================
472
+ # PDF Block
473
+ # ============================================================================
474
+
475
+
476
+ class PdfData(BaseModel):
477
+ model_config = ConfigDict(from_attributes=True)
478
+ caption: list[RichText] = Field(default_factory=list)
479
+ type: FileType
480
+ external: ExternalFile | None = None
481
+ file: NotionHostedFile | None = None
482
+ file_upload: FileUploadFile | None = None
483
+ name: str | None = None
484
+
485
+
486
+ class PdfBlock(BaseBlock):
487
+ type: Literal[BlockType.PDF] = BlockType.PDF
488
+ pdf: PdfData
489
+
490
+
491
+ class CreatePdfBlock(BaseModel):
492
+ type: Literal[BlockType.PDF] = BlockType.PDF
493
+ pdf: PdfData
494
+
495
+
496
+ # ============================================================================
497
+ # Quote Block
498
+ # ============================================================================
499
+
500
+
501
+ class BaseQuoteData(BaseModel):
502
+ rich_text: list[RichText]
503
+ color: BlockColor = BlockColor.DEFAULT
504
+
505
+
506
+ class QuoteData(BaseQuoteData):
507
+ children: list[Block] | None = None
508
+
509
+
510
+ class QuoteBlock(BaseBlock):
511
+ type: Literal[BlockType.QUOTE] = BlockType.QUOTE
512
+ quote: QuoteData
513
+
514
+
515
+ class CreateQuoteData(BaseQuoteData):
516
+ children: list[BlockCreatePayload] | None = None
517
+
518
+
519
+ class CreateQuoteBlock(BaseModel):
520
+ type: Literal[BlockType.QUOTE] = BlockType.QUOTE
521
+ quote: CreateQuoteData
522
+
523
+
524
+ # ============================================================================
525
+ # Table and Table Row Blocks
526
+ # ============================================================================
527
+
528
+
529
+ class TableRowData(BaseModel):
530
+ cells: list[list[RichText]]
531
+
532
+
533
+ class TableRowBlock(BaseBlock):
534
+ type: Literal[BlockType.TABLE_ROW] = BlockType.TABLE_ROW
535
+ table_row: TableRowData
536
+
537
+
538
+ class CreateTableRowBlock(BaseModel):
539
+ type: Literal[BlockType.TABLE_ROW] = BlockType.TABLE_ROW
540
+ table_row: TableRowData
541
+
542
+
543
+ class BaseTableData(BaseModel):
544
+ table_width: int
545
+ has_column_header: bool = False
546
+ has_row_header: bool = False
547
+
548
+
549
+ class TableData(BaseTableData):
550
+ children: list[TableRowBlock] = Field(default_factory=list)
551
+
552
+
553
+ class TableBlock(BaseBlock):
554
+ type: Literal[BlockType.TABLE] = BlockType.TABLE
555
+ table: TableData
556
+
557
+
558
+ class CreateTableData(BaseTableData):
559
+ children: list[CreateTableRowBlock] = Field(default_factory=list)
560
+
561
+
562
+ class CreateTableBlock(BaseModel):
563
+ type: Literal[BlockType.TABLE] = BlockType.TABLE
564
+ table: CreateTableData
565
+
566
+
567
+ # ============================================================================
568
+ # Table of Contents Block
569
+ # ============================================================================
570
+
571
+
572
+ class TableOfContentsData(BaseModel):
573
+ color: BlockColor = BlockColor.DEFAULT
574
+
575
+
576
+ class TableOfContentsBlock(BaseBlock):
577
+ type: Literal[BlockType.TABLE_OF_CONTENTS] = BlockType.TABLE_OF_CONTENTS
578
+ table_of_contents: TableOfContentsData
579
+
580
+
581
+ class CreateTableOfContentsBlock(BaseModel):
582
+ type: Literal[BlockType.TABLE_OF_CONTENTS] = BlockType.TABLE_OF_CONTENTS
583
+ table_of_contents: TableOfContentsData
584
+
585
+
586
+ # ============================================================================
587
+ # To Do Block
588
+ # ============================================================================
589
+
590
+
591
+ class ToDoData(BaseModel):
592
+ rich_text: list[RichText]
593
+ checked: bool = False
594
+ color: BlockColor = BlockColor.DEFAULT
595
+
596
+
597
+ class ToDoBlock(BaseBlock):
598
+ type: Literal[BlockType.TO_DO] = BlockType.TO_DO
599
+ to_do: ToDoData
600
+
601
+
602
+ class CreateToDoBlock(BaseModel):
603
+ type: Literal[BlockType.TO_DO] = BlockType.TO_DO
604
+ to_do: ToDoData
605
+
606
+
607
+ # ============================================================================
608
+ # Toggle Block
609
+ # ============================================================================
610
+
611
+
612
+ class BaseToggleData(BaseModel):
613
+ rich_text: list[RichText]
614
+ color: BlockColor = BlockColor.DEFAULT
615
+
616
+
617
+ class ToggleData(BaseToggleData):
618
+ children: list[Block] | None = None
619
+
620
+
621
+ class ToggleBlock(BaseBlock):
622
+ type: Literal[BlockType.TOGGLE] = BlockType.TOGGLE
623
+ toggle: ToggleData
624
+
625
+
626
+ class CreateToggleData(BaseToggleData):
627
+ children: list[BlockCreatePayload] | None = None
628
+
629
+
630
+ class CreateToggleBlock(BaseModel):
631
+ type: Literal[BlockType.TOGGLE] = BlockType.TOGGLE
632
+ toggle: CreateToggleData
633
+
634
+
635
+ # ============================================================================
636
+ # Video Block
637
+ # ============================================================================
638
+
639
+
640
+ class VideoData(BaseModel):
641
+ model_config = ConfigDict(from_attributes=True)
642
+ caption: list[RichText] = Field(default_factory=list)
643
+ type: FileType
644
+ external: ExternalFile | None = None
645
+ file: NotionHostedFile | None = None
646
+ file_upload: FileUploadFile | None = None
647
+ name: str | None = None
648
+
649
+
650
+ class VideoBlock(BaseBlock):
651
+ type: Literal[BlockType.VIDEO] = BlockType.VIDEO
652
+ video: VideoData
653
+
654
+
655
+ class CreateVideoBlock(BaseModel):
656
+ type: Literal[BlockType.VIDEO] = BlockType.VIDEO
657
+ video: VideoData
658
+
659
+
660
+ # ============================================================================
661
+ # Block Union Type
662
+ # ============================================================================
663
+
664
+ Block = Annotated[
665
+ (
666
+ AudioBlock
667
+ | BookmarkBlock
668
+ | BreadcrumbBlock
669
+ | BulletedListItemBlock
670
+ | CalloutBlock
671
+ | ChildPageBlock
672
+ | ChildDatabaseBlock
673
+ | CodeBlock
674
+ | ColumnListBlock
675
+ | ColumnBlock
676
+ | DividerBlock
677
+ | EmbedBlock
678
+ | EquationBlock
679
+ | FileBlock
680
+ | Heading1Block
681
+ | Heading2Block
682
+ | Heading3Block
683
+ | ImageBlock
684
+ | NumberedListItemBlock
685
+ | ParagraphBlock
686
+ | PdfBlock
687
+ | QuoteBlock
688
+ | TableBlock
689
+ | TableRowBlock
690
+ | TableOfContentsBlock
691
+ | ToDoBlock
692
+ | ToggleBlock
693
+ | VideoBlock
694
+ ),
695
+ Field(discriminator="type"),
696
+ ]
697
+
698
+
699
+ # ============================================================================
700
+ # Block Response and Request Types
701
+ # ============================================================================
702
+
703
+
704
+ class BlockChildrenResponse(BaseModel):
705
+ object: Literal["list"]
706
+ results: list[Block]
707
+ next_cursor: str | None = None
708
+ has_more: bool
709
+ type: Literal["block"]
710
+ block: dict = {}
711
+ request_id: str
712
+
713
+
714
+ BlockCreatePayload = Annotated[
715
+ (
716
+ CreateAudioBlock
717
+ | CreateBookmarkBlock
718
+ | CreateBreadcrumbBlock
719
+ | CreateBulletedListItemBlock
720
+ | CreateCalloutBlock
721
+ | CreateChildPageBlock
722
+ | CreateChildDatabaseBlock
723
+ | CreateCodeBlock
724
+ | CreateColumnListBlock
725
+ | CreateColumnBlock
726
+ | CreateDividerBlock
727
+ | CreateEmbedBlock
728
+ | CreateEquationBlock
729
+ | CreateFileBlock
730
+ | CreateHeading1Block
731
+ | CreateHeading2Block
732
+ | CreateHeading3Block
733
+ | CreateImageBlock
734
+ | CreateNumberedListItemBlock
735
+ | CreateParagraphBlock
736
+ | CreatePdfBlock
737
+ | CreateQuoteBlock
738
+ | CreateTableBlock
739
+ | CreateTableRowBlock
740
+ | CreateTableOfContentsBlock
741
+ | CreateToDoBlock
742
+ | CreateToggleBlock
743
+ | CreateVideoBlock
744
+ ),
745
+ Field(discriminator="type"),
746
+ ]