notionary 0.2.27__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.27.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.27.dist-info → notionary-0.2.28.dist-info}/WHEEL +1 -1
  200. {notionary-0.2.27.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 -712
  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.27.dist-info/RECORD +0 -202
notionary/util/fuzzy.py DELETED
@@ -1,75 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import difflib
4
- from dataclasses import dataclass
5
- from typing import Any, Callable, List, Optional, TypeVar
6
-
7
- T = TypeVar("T")
8
-
9
-
10
- @dataclass
11
- class MatchResult:
12
- """Result of a fuzzy match operation."""
13
-
14
- item: Any
15
- similarity: float
16
- matched_text: str
17
-
18
-
19
- def calculate_similarity(query: str, target: str) -> float:
20
- """Calculate similarity between two strings using difflib."""
21
- return difflib.SequenceMatcher(
22
- None, query.lower().strip(), target.lower().strip()
23
- ).ratio()
24
-
25
-
26
- def find_best_matches(
27
- query: str,
28
- items: List[T],
29
- text_extractor: Callable[[T], str],
30
- min_similarity: float = 0.0,
31
- limit: Optional[int] = None,
32
- ) -> List[MatchResult[T]]:
33
- """
34
- Find best fuzzy matches from a list of items.
35
-
36
- Args:
37
- query: The search query
38
- items: List of items to search through
39
- text_extractor: Function to extract text from each item
40
- min_similarity: Minimum similarity threshold (0.0 to 1.0)
41
- limit: Maximum number of results to return
42
-
43
- Returns:
44
- List of MatchResult objects sorted by similarity (highest first)
45
- """
46
- results = []
47
-
48
- for item in items:
49
- text = text_extractor(item)
50
- similarity = calculate_similarity(query, text)
51
-
52
- if similarity >= min_similarity:
53
- results.append(
54
- MatchResult(item=item, similarity=similarity, matched_text=text)
55
- )
56
-
57
- # Sort by similarity (highest first)
58
- results.sort(key=lambda x: x.similarity, reverse=True)
59
-
60
- # Apply limit if specified
61
- if limit:
62
- results = results[:limit]
63
-
64
- return results
65
-
66
-
67
- def find_best_match(
68
- query: str,
69
- items: List[T],
70
- text_extractor: Callable[[T], str],
71
- min_similarity: float = 0.0,
72
- ) -> Optional[MatchResult[T]]:
73
- """Find the single best fuzzy match."""
74
- matches = find_best_matches(query, items, text_extractor, min_similarity, limit=1)
75
- return matches[0] if matches else None
@@ -1,27 +0,0 @@
1
- import re
2
- from typing import Optional
3
-
4
- UUID_PATTERN = r"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
5
- UUID_RAW_PATTERN = r"([a-f0-9]{32})"
6
-
7
-
8
- def extract_uuid(source: str) -> Optional[str]:
9
- if is_valid_uuid(source):
10
- return source
11
-
12
- match = re.search(UUID_RAW_PATTERN, source.lower())
13
- if not match:
14
- return None
15
-
16
- uuid_raw = match.group(1)
17
- return f"{uuid_raw[0:8]}-{uuid_raw[8:12]}-{uuid_raw[12:16]}-{uuid_raw[16:20]}-{uuid_raw[20:32]}"
18
-
19
-
20
- def is_valid_uuid(uuid: str) -> bool:
21
- return bool(re.match(UUID_PATTERN, uuid.lower()))
22
-
23
-
24
- def format_uuid(value: str) -> Optional[str]:
25
- if is_valid_uuid(value):
26
- return value
27
- return extract_uuid(value)
@@ -1,18 +0,0 @@
1
- def singleton(cls):
2
- """
3
- Simple singleton decorator that ensures only one instance of a class exists.
4
-
5
- Usage:
6
- @singleton
7
- class MyClass:
8
- pass
9
- """
10
- instances = {}
11
-
12
- def __new__(cls, *args, **kwargs):
13
- if cls not in instances:
14
- instances[cls] = super(cls, cls).__new__(cls)
15
- return instances[cls]
16
-
17
- cls.__new__ = __new__
18
- return cls
@@ -1,22 +0,0 @@
1
- from typing import Any, Dict, Type, TypeVar, cast
2
-
3
- T = TypeVar("T")
4
-
5
-
6
- class SingletonMetaClass(type):
7
- """
8
- A metaclass that ensures a class has only a single instance.
9
- Provides a get_instance() method with proper type hinting.
10
- """
11
-
12
- _instances: Dict[Type, Any] = {}
13
-
14
- def __call__(cls: Type[T], *args: Any, **kwargs: Any) -> T:
15
- """Called when the class is instantiated (e.g., MyClass())."""
16
- if cls not in cls._instances:
17
- cls._instances[cls] = super().__call__(*args, **kwargs)
18
- return cast(T, cls._instances[cls])
19
-
20
- def get_instance(cls: Type[T], *args: Any, **kwargs: Any) -> T:
21
- """Explicit method to retrieve the singleton instance with correct return type."""
22
- return cls(*args, **kwargs) # Triggers __call__
notionary/workspace.py DELETED
@@ -1,105 +0,0 @@
1
- import asyncio
2
- from typing import Optional
3
-
4
- from notionary import NotionDatabase, NotionPage
5
- from notionary.database.client import NotionDatabaseClient
6
- from notionary.page.client import NotionPageClient
7
- from notionary.user import NotionUser, NotionUserManager
8
- from notionary.util import LoggingMixin
9
-
10
-
11
- class NotionWorkspace(LoggingMixin):
12
- """
13
- Represents a Notion workspace, providing methods to interact with databases, pages, and limited user operations.
14
-
15
- Note: Due to Notion API limitations, bulk user operations (listing all users) are not supported.
16
- Only individual user queries and bot user information are available.
17
- """
18
-
19
- def __init__(self, token: Optional[str] = None):
20
- """
21
- Initialize the workspace with Notion clients.
22
- """
23
- self.database_client = NotionDatabaseClient(token=token)
24
- self.page_client = NotionPageClient(token=token)
25
- self.user_manager = NotionUserManager(token=token)
26
-
27
- async def search_pages(self, query: str, limit=100) -> list[NotionPage]:
28
- """
29
- Search for pages globally across Notion workspace.
30
- """
31
- response = await self.page_client.search_pages(query, limit=limit)
32
- return await asyncio.gather(
33
- *(NotionPage.from_page_id(page.id) for page in response.results)
34
- )
35
-
36
- async def search_databases(
37
- self, query: str, limit: int = 100
38
- ) -> list[NotionDatabase]:
39
- """
40
- Search for databases globally across the Notion workspace.
41
- """
42
- response = await self.database_client.search_databases(query=query, limit=limit)
43
- return await asyncio.gather(
44
- *(
45
- NotionDatabase.from_database_id(database.id)
46
- for database in response.results
47
- )
48
- )
49
-
50
- async def get_database_by_name(
51
- self, database_name: str
52
- ) -> Optional[NotionDatabase]:
53
- """
54
- Get a Notion database by its name.
55
- Uses Notion's search API and returns the first matching database.
56
- """
57
- databases = await self.search_databases(query=database_name, limit=1)
58
-
59
- return databases[0] if databases else None
60
-
61
- async def list_all_databases(self, limit: int = 100) -> list[NotionDatabase]:
62
- """
63
- List all databases in the workspace.
64
- Returns a list of NotionDatabase instances.
65
- """
66
- database_results = await self.database_client.search_databases(
67
- query="", limit=limit
68
- )
69
- return [
70
- await NotionDatabase.from_database_id(database.id)
71
- for database in database_results.results
72
- ]
73
-
74
- # User-related methods (limited due to API constraints)
75
- async def get_current_bot_user(self) -> Optional[NotionUser]:
76
- """
77
- Get the current bot user from the API token.
78
-
79
- Returns:
80
- Optional[NotionUser]: Current bot user or None if failed
81
- """
82
- return await self.user_manager.get_current_bot_user()
83
-
84
- async def get_user_by_id(self, user_id: str) -> Optional[NotionUser]:
85
- """
86
- Get a specific user by their ID.
87
-
88
- Args:
89
- user_id: The ID of the user to retrieve
90
-
91
- Returns:
92
- Optional[NotionUser]: The user or None if not found/failed
93
- """
94
- return await self.user_manager.get_user_by_id(user_id)
95
-
96
- async def get_workspace_info(self) -> Optional[dict]:
97
- """
98
- Get available workspace information including bot details.
99
-
100
- Returns:
101
- Optional[dict]: Workspace information or None if failed to get bot user
102
- """
103
- return await self.user_manager.get_workspace_info()
104
-
105
- # TODO: Create database would be nice here
@@ -1,202 +0,0 @@
1
- notionary/__init__.py,sha256=qFQ-hZah6dNnzgDYUfx7ifrkyXWpJoKFk1rwZyVuUSE,614
2
- notionary/base_notion_client.py,sha256=EKExy91oeVHdknK-XU2IkKB6SJgN96ZfbblRK05wnV4,7071
3
- notionary/blocks/__init__.py,sha256=-SsbyEnYg4YbrpJgE1zFRTelwIWva-QRqDZZZV2sTkY,85
4
- notionary/blocks/_bootstrap.py,sha256=8xs6EDSPdGNr7NsrxmH2pg1dvVjfbghX5N74tRALKog,9450
5
- notionary/blocks/audio/__init__.py,sha256=l3mCypwOOJ1HCz4pMANlKrrV5sAWaCoU2qGQryuKOwg,304
6
- notionary/blocks/audio/audio_element.py,sha256=FjKzdSgy-pid-iBSDb001eR3Pgpgce1PbFZwvFHEA68,6429
7
- notionary/blocks/audio/audio_markdown_node.py,sha256=dlJWuQNeEYawol-ItdKzp-n3TUe9On0Zyl01DgBWwFM,795
8
- notionary/blocks/audio/audio_models.py,sha256=ts281Wgjh0FQBK4a6IKKNGPcG0U18T1euCgo83-JSg4,229
9
- notionary/blocks/base_block_element.py,sha256=r9W3EHIwQ2A824x2MlFGTfQpZjMvfB-fUVTI2x3peyc,1546
10
- notionary/blocks/bookmark/__init__.py,sha256=Sln6BmxZBV-7ZaVDOSEWQ8pOL-ZHWHN25EjgqxPbIqQ,377
11
- notionary/blocks/bookmark/bookmark_element.py,sha256=y6wkdRor3cn9n5gE1pFnH6bc5B43YYqrwWHTXrC0GPs,3399
12
- notionary/blocks/bookmark/bookmark_markdown_node.py,sha256=O9HpnQQpTwZdSYk0eTP0NNw2mL4c8Mob4jl6DmBjnhY,939
13
- notionary/blocks/bookmark/bookmark_models.py,sha256=kJTitF93xd0YITvP_FuwpjnBUNLeDMr7fDAXV8MAJrk,375
14
- notionary/blocks/breadcrumbs/__init__.py,sha256=dcy-EsClgdlUqEDJSKBYvZBEttCGemABaeqZcZp5jKc,424
15
- notionary/blocks/breadcrumbs/breadcrumb_element.py,sha256=cVZHiMqaYL4EGphnX1OCh3Inf93TFwFosB-1PGCS2do,1268
16
- notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py,sha256=XxJoC_2TwfkE0bxeWeisRGCA2Qhg66G27qBxsmiyjGc,359
17
- notionary/blocks/breadcrumbs/breadcrumb_models.py,sha256=-XGIIMYiQuGe5iXmW-1Y9Y9Yca0w6u3HbiD1SBue8sI,237
18
- notionary/blocks/bulleted_list/__init__.py,sha256=ypxv5AGCrkiOUCcLni3iVg3-XfWHZB9Ksf5GV6DOlkU,471
19
- notionary/blocks/bulleted_list/bulleted_list_element.py,sha256=YY2kOCgFinD7Mk6Ns9KLxm4KlNtlZoT87zcrEpq97HM,3095
20
- notionary/blocks/bulleted_list/bulleted_list_markdown_node.py,sha256=Rnc-zYttdVR4gl7mIkxqoRg7I8LHR7rkd1pmXdcfvLk,523
21
- notionary/blocks/bulleted_list/bulleted_list_models.py,sha256=QN21PIwAP7MQoIjZeUBwMUKTZrK6-QbDu-8NFSvpjLQ,504
22
- notionary/blocks/callout/__init__.py,sha256=17rdvOF5W1aPxkp-pk13rLgkx6pIciCsub3ncAv_zXk,363
23
- notionary/blocks/callout/callout_element.py,sha256=6Ss1jv1cqAM4GuNGvuy7dCFjpp-dLavf-wXevn3IEmw,3575
24
- notionary/blocks/callout/callout_markdown_node.py,sha256=2zZNMwg8uiGBqaMOUVOTlIK8kiq20IQ0Ylv7ZFUm-bc,602
25
- notionary/blocks/callout/callout_models.py,sha256=g_xU7oiRRseoSO86dqHPIiwoseGvvnl3jsPZbBMT-mE,865
26
- notionary/blocks/child_database/__init__.py,sha256=FzjjHOS9Je2oXuxLK9S9Oq56-EDEZRTJBfDzkacFpY0,368
27
- notionary/blocks/child_database/child_database_element.py,sha256=1pxtoB_XTIWorYp984TpsPMZy8A5IdQ15nJALyzme-c,2279
28
- notionary/blocks/child_database/child_database_models.py,sha256=SP6S9tKTetKNdCkYY3QCxeXd2lq1DyfdNvDhKlhD22Q,264
29
- notionary/blocks/child_page/__init__.py,sha256=qaHvJqF8Bfzj0NVE1Q5uN_4o3Jl4RuNYspMZ6E7bUuk,182
30
- notionary/blocks/child_page/child_page_element.py,sha256=iZIJ91CQ9ZztivtSNKKA8-OD6YIGZvGsxeuD8vZ1PLg,3389
31
- notionary/blocks/child_page/child_page_models.py,sha256=LZhziu2nf-8FopcaQi6dJKOJ3lgY6Pc2S-ace6jPeqQ,240
32
- notionary/blocks/client.py,sha256=9rhfWM3LNxYrB0bez2RKLGE2gVnBaJbrQa1qu6FSKVE,8692
33
- notionary/blocks/code/__init__.py,sha256=8mTDHndNb4kzDByETe2gG7-YHMrt18cf_gmV60JXHOc,345
34
- notionary/blocks/code/code_element.py,sha256=-8b63RxD7qJzOkMMF_eLo-z9TdsI33r0JUJc5cyFAzs,5661
35
- notionary/blocks/code/code_markdown_node.py,sha256=ZfZE9JOmBwAvkEua0wA_W9wCAjl52YBq4UrTBVlVjRM,2655
36
- notionary/blocks/code/code_models.py,sha256=hK-Ka9whQO-xWASr0sbhRcz-FUc5VY5Pjqa8LPW041o,2178
37
- notionary/blocks/column/__init__.py,sha256=r0XRwU3cEo6Te-4XkiVOPtd_VHlEVchgoI7e-jNQ9Ic,698
38
- notionary/blocks/column/column_element.py,sha256=1BtZ5EWq1QpUEAh-OEpvZOTZfeFFDyDKCZCSo8nskJw,2338
39
- notionary/blocks/column/column_list_element.py,sha256=gyAZ_Q79g5sEp24IbHHXZvyX8BRmN1jo6ahoVxXxR4E,2398
40
- notionary/blocks/column/column_list_markdown_node.py,sha256=PW72mCWt2n-IuAYv6DwLbT_nlE0S2ka2pCfQZ9YC6_o,952
41
- notionary/blocks/column/column_markdown_node.py,sha256=ryedjyw9z_y-SUWb7M8J-LO9-pcdE3DEscETVgIYBPk,1156
42
- notionary/blocks/column/column_models.py,sha256=Dv1jBWmuFjjSqyOajkh05jmxEwxF9b-LuDA4Sgw8RJI,664
43
- notionary/blocks/divider/__init__.py,sha256=rDbsdRmtXBVh-5LgmgO0Wq4y6jChy7lpxyaUd5WU2wk,363
44
- notionary/blocks/divider/divider_element.py,sha256=MHPctdc5-EwxTrcoA4EjEgiFzWnDZqHziKBoz6xZMrQ,1395
45
- notionary/blocks/divider/divider_markdown_node.py,sha256=2yZYUMeNNG8ncmwzrn-WDj4JHAhYyaPyb9mQGNk22Cg,314
46
- notionary/blocks/divider/divider_models.py,sha256=A7jUBYZnE_yRLTZi-sr9sbDCrWNhAdriFNzCpDEBwGU,219
47
- notionary/blocks/embed/__init__.py,sha256=yQehCntnQpyyP0qS6H0HpZlTg2jdOJo47kb-Gq0O8Ec,335
48
- notionary/blocks/embed/embed_element.py,sha256=xzDBA4OS2O4OASXRoy2oFO5WEm3hF4dVEryokGm8bwk,3594
49
- notionary/blocks/embed/embed_markdown_node.py,sha256=0VJg6THsgVOGxxA7U-GakzNyNHDt7yqC8SJM3kvIO48,563
50
- notionary/blocks/embed/embed_models.py,sha256=utXtHlIIK5QA24ZJW7l0XfDtrt12DureH1DugOi9mNw,366
51
- notionary/blocks/equation/__init__.py,sha256=-6JSN3DSmf56TgkAeClAkfhH3jtHIx0MPSD2NQBRh7Q,421
52
- notionary/blocks/equation/equation_element.py,sha256=EME_KVHjdO9e7xnuFxlmkbzRcL1b8LrEikYzXXZGNMM,4750
53
- notionary/blocks/equation/equation_element_markdown_node.py,sha256=VIPSdhsyh5xhGq5INY4I8dvjNZlW_2536YmdGlfwnqM,612
54
- notionary/blocks/equation/equation_models.py,sha256=WIpnqHmwh2rpNTVvt6eFNzkhHejW8XMWDQbwtLIcxKw,245
55
- notionary/blocks/file/__init__.py,sha256=J40Bp-eyyzDzOU-OQ51duLHVlBtb_0WkUWumyRXyAUs,517
56
- notionary/blocks/file/file_element.py,sha256=6B7gtn6wt7w3vnKGFZS4rmzU7FG-I_LYjFsiCtMy7i4,5203
57
- notionary/blocks/file/file_element_markdown_node.py,sha256=XLEq6nMd5j8BesmPqTIxgdb33Rn3dXZ_YS7siowjgSU,801
58
- notionary/blocks/file/file_element_models.py,sha256=1eia1-OamnF52AUYtC3Ru-xi6HHsnjw9hcuslkHKXuI,850
59
- notionary/blocks/heading/__init__.py,sha256=aaHtYkTQwCd7vMS4gaRYMuIS3oBhnwUJHEtMmHIzLkM,489
60
- notionary/blocks/heading/heading_element.py,sha256=Hdnlzj94AoYCMYZuVOl91tREn1S6hwolA4vWwMtAFWk,3894
61
- notionary/blocks/heading/heading_markdown_node.py,sha256=F5VLPto88EkBnWV0h8djs3wXhW76N0cq4fx9TWHSuuo,486
62
- notionary/blocks/heading/heading_models.py,sha256=CBmLRPIsKwoKKQfEEeRqT1lZj_pDa7pkwIxKB-hwuus,784
63
- notionary/blocks/image_block/__init__.py,sha256=MviMkAqQpTDA8dyooWNRn65XfbWfclRz0PMuGD5BYf0,322
64
- notionary/blocks/image_block/image_element.py,sha256=_aERfgLksOJPlAIrZ74PvWwJvSn5eMoEebK9KwVPuOk,5263
65
- notionary/blocks/image_block/image_markdown_node.py,sha256=aqkvNpNshvYKnLCS5aLsQU2slFys7VFKRVJgwnuLdOw,840
66
- notionary/blocks/image_block/image_models.py,sha256=vmuGwgq3uP9ojb-6IOdjsEqIKI-9uTa5_0BCMkzJV_A,229
67
- notionary/blocks/markdown/markdown_builder.py,sha256=alruyT9IbrCjbpLeQ_1pZKdZlWW4NgmzVp4XpVwOG30,17473
68
- notionary/blocks/markdown/markdown_document_model.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- notionary/blocks/markdown/markdown_node.py,sha256=I1E6VyIoFiM7za2krikuQHFHu2_YNq9S7Cz36Rj8iSw,699
70
- notionary/blocks/mixins/captions/__init__.py,sha256=hGq6UOBiSgnaWB9UXgvtuG2sLPNgs5GAaz-8vrBmh2Q,166
71
- notionary/blocks/mixins/captions/caption_markdown_node_mixin.py,sha256=uaT_k7cfJgDhvdAavPmRJJHeEcwVECe21dcawcffHVE,1021
72
- notionary/blocks/mixins/captions/caption_mixin.py,sha256=6H69_bkUWSy2vNdW01kEJuOyIopZYoL3fMQ3T7xe6XI,3342
73
- notionary/blocks/mixins/file_upload/__init__.py,sha256=VUGw4QPs01w6cUMaWMDv5p0htKZZAjiZ9RqFilVszz8,81
74
- notionary/blocks/mixins/file_upload/file_upload_mixin.py,sha256=hyNSn7NQigSh1__HYWDOYzFQkGt9xuzXhKei_1ZoWlo,10858
75
- notionary/blocks/models.py,sha256=cwUgc3wjrKA6MiEnZzCpHS35Y54jPHlIrKRPUNjZm0s,5835
76
- notionary/blocks/numbered_list/__init__.py,sha256=Q6fCQ0j9UAas8hgMiTtXpCP-RxglVnNeRK4naFgDppw,511
77
- notionary/blocks/numbered_list/numbered_list_element.py,sha256=ZPoLYCj0xJXeWdjeJImuTeVWd1fqeByLzMj29V4Yf1Y,2755
78
- notionary/blocks/numbered_list/numbered_list_markdown_node.py,sha256=-GrG39S6k1OpoJqzotY9C2NhdP7HcNto0sTtNRDfPsg,481
79
- notionary/blocks/numbered_list/numbered_list_models.py,sha256=N_h2okhIFtnE8gkTfdUbt_cM9M-6rwbn3lxWtwkLfi4,566
80
- notionary/blocks/paragraph/__init__.py,sha256=9OSS-ZZFetlnwjCI2PmFDVJo9dV1YIUWUl0CTHJ0mJo,407
81
- notionary/blocks/paragraph/paragraph_element.py,sha256=cp90cL0hi9gvIoefmxd-U_xM4z5YiTYt3yO7NQ-Hyvg,2478
82
- notionary/blocks/paragraph/paragraph_markdown_node.py,sha256=aCYJv58EiyKi-DgQEbkwnkZT4NTANHAnWzoOzVQ1cBc,436
83
- notionary/blocks/paragraph/paragraph_models.py,sha256=Hm4IXYNrKqNqMy6QUt6SnIiVNZU_4a-27BH7fNBjc0o,429
84
- notionary/blocks/pdf/__init__.py,sha256=qS6v00Rh9GXTCohnV8-yvhtt6eHmKhCegxUK1Vvl86k,280
85
- notionary/blocks/pdf/pdf_element.py,sha256=kUBQW0m1GMrKHBt591TJDViiQ-ZLeEIqLRLJWqR-eew,5822
86
- notionary/blocks/pdf/pdf_markdown_node.py,sha256=wKptmG1I1v9QteP_SoKmbOofSh458lcQ1-8nLKA9aS0,802
87
- notionary/blocks/pdf/pdf_models.py,sha256=k3GB01LNDWnvcxj-gtHSMYAwElrDqFdXkw6DFjlpZNY,293
88
- notionary/blocks/quote/__init__.py,sha256=Hu3v0RfYH-9CSKazI2IcaddaePY8c6Y7o03qsppruZw,380
89
- notionary/blocks/quote/quote_element.py,sha256=X7YZrhg94rgvWuRi96hbetbMx_FJbYGsmto1P_Am34I,2795
90
- notionary/blocks/quote/quote_markdown_node.py,sha256=o7oe6XY0s1zocC79SVRLGIZ0VoGHv5znXzBtTTN47EQ,405
91
- notionary/blocks/quote/quote_models.py,sha256=XT1hDfYw8SZUEg-rPfHiC4_0LNVWK-Vs7J6h9PIGgNE,506
92
- notionary/blocks/registry/__init__.py,sha256=NswYfZQLLUlLlR5Gtdg1tAafyO9lXLldbeC5Y7WgLYk,74
93
- notionary/blocks/registry/block_registry.py,sha256=N26nAWoNxfBlSt4gTWiJ1mqjajkcj2anAt9iDht1vDk,5394
94
- notionary/blocks/rich_text/__init__.py,sha256=UuOn0MmGKNqK3fLBnEcH2surwbDkZ4GF8Gpn4TLNwLc,773
95
- notionary/blocks/rich_text/rich_text_models.py,sha256=QPCHA-vo8DoH7sLAVzOXervoeeV39JRuJkR-IGVA63Y,6278
96
- notionary/blocks/rich_text/text_inline_formatter.py,sha256=8J8y27OuMLX-IvSJs0Ogmvw0gw1bgQD9n55nRjSldbg,18379
97
- notionary/blocks/syntax_prompt_builder.py,sha256=VwvpR8JyyKR13_ni0jUt--F7w6DoD_nzJB2LbwiJXJc,4626
98
- notionary/blocks/table/__init__.py,sha256=Z9AJN899NDlGP8M0AnMBBJmy2XqZ5jLz2-EXr-u3YV0,447
99
- notionary/blocks/table/table_element.py,sha256=eeqFHlyQ1dG1ZxB3zdrdvF5qXPsLqSEVyNQJ70W9Rwg,8002
100
- notionary/blocks/table/table_markdown_node.py,sha256=PJRgcCrChQQd_REuqmxRpYeKqMXQj_fd8o7O69c930A,1330
101
- notionary/blocks/table/table_models.py,sha256=P0VUkX8FOE6aFWAyhOVVMVAYGtj_LO0sqSYtlbyCpQA,643
102
- notionary/blocks/table_of_contents/__init__.py,sha256=4kLR62Uqijn7A6sUGoS6H_RewYo3E0-kM9-7RkLaJM4,514
103
- notionary/blocks/table_of_contents/table_of_contents_element.py,sha256=YRMVPf09sB39kYCocwdGtezBXdPs1-04rm8J4Nln6xQ,3222
104
- notionary/blocks/table_of_contents/table_of_contents_markdown_node.py,sha256=T4cqadSo0W__WW36Sybh0VVMbx_c9-gGYzLVDVu8XRU,560
105
- notionary/blocks/table_of_contents/table_of_contents_models.py,sha256=QcxH8EHE4WSOv4lFlpyztpul7IQuc6wdGqNZkAUOZ9s,551
106
- notionary/blocks/todo/__init__.py,sha256=MDQQ67F7sbKtIYSU8FWgzKCgAiOKpxUfzvH0WTF5-9k,321
107
- notionary/blocks/todo/todo_element.py,sha256=8rH84wHH1FEFnVd76AZrT-c-BpkwaN9hLQK7CWMCbBY,3092
108
- notionary/blocks/todo/todo_markdown_node.py,sha256=tvXEoIsc21hnLJh2-ESXWp9p0gVGwHZULhc5JWPHjXQ,733
109
- notionary/blocks/todo/todo_models.py,sha256=lWzZeQ164tQlwAXWAWCnaRIvKUhOZBnCNCpGwUDyLMo,476
110
- notionary/blocks/toggle/__init__.py,sha256=g92ihlvQuLGYNDzcYSCexK01WZbAOVNfZBSgOSSbTvA,349
111
- notionary/blocks/toggle/toggle_element.py,sha256=O_gv3Xz0vxtJ3-1Hi07xBbrpgLDo9FKZ_OESOhbvpAQ,4618
112
- notionary/blocks/toggle/toggle_markdown_node.py,sha256=qFVZsoksi82t4Iy5WwsUE9nDu4VOb8t35vgkHmkFOmU,862
113
- notionary/blocks/toggle/toggle_models.py,sha256=Tkqmz7bzKX7v-T9xWZLy9Eiw_ksGg4UZaacE30uZmwI,521
114
- notionary/blocks/toggleable_heading/__init__.py,sha256=96BPG37gqHtOxWiBemrubK8AyIBtbTJuRDUn7imEHLY,324
115
- notionary/blocks/toggleable_heading/toggleable_heading_element.py,sha256=y3tBDWmi3IeyhFyJEmsFndhlrQls5XhJVUGUVORnXUY,4428
116
- notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py,sha256=lqUChE-4NOvtFxhTjg0uRBWT7WQI5hd5arHJ6eBkKno,1056
117
- notionary/blocks/types.py,sha256=qAmcxIGQcekrLsbNZVjOcI3HYmvHz5bzFFj8Asuh8JI,3567
118
- notionary/blocks/video/__init__.py,sha256=eDWiVkZYbsXqgBhdHY2ge9R21ml7-BTAMJ3T3HCajdY,312
119
- notionary/blocks/video/video_element.py,sha256=D8CrlxKSrgRpBE9O9i1Udir85dFq3r3CYRabSIWWxWI,7149
120
- notionary/blocks/video/video_element_models.py,sha256=CYK2tq0qhrOxjO_ctOgRvEHM9hLjQCBXrP7wcTNlUPw,229
121
- notionary/blocks/video/video_markdown_node.py,sha256=ORbLqVvl_o9YJrDOLUOMk7mnxyl1NSKjbMDwLPbdCSM,844
122
- notionary/comments/__init__.py,sha256=G0OWsaN2VgbykvhLlNSweL_f0bl16j9NpidH2UNbFcQ,529
123
- notionary/comments/client.py,sha256=vWjgPFk_TPY7peq10aJc7WTG-b0q6Fn8qirAlzlqLls,7311
124
- notionary/comments/models.py,sha256=O2-yg-0Xrs8xrzLUa4793FlyNn3HbTRsv4dqaskI6ps,3409
125
- notionary/database/__init__.py,sha256=4tdML0fBzkOCpiWT6q-L--5NELFLbTPD0IUA_E8yZno,155
126
- notionary/database/client.py,sha256=NQWUcfMLAYsnTefFgOjgOHMYN7rn_IRBrsKPUlUY0c8,5361
127
- notionary/database/database.py,sha256=sdo830KVInR4enaEaeMHaPadNfYnPLy5R3OW2f74w28,16558
128
- notionary/database/database_filter_builder.py,sha256=YIkdghD5VbdwLJISMRiJ0WIJTm8jcDIL22yrvZau4sA,5950
129
- notionary/database/database_provider.py,sha256=HB-hZ9pMjronLJS8w_b1GiQ-Ecz1uJbrWpnePL67BCA,8956
130
- notionary/database/exceptions.py,sha256=jwFdxoIQHLO3mO3p5t890--1FjbTX60fNyqBAe-sszo,452
131
- notionary/database/factory.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
- notionary/database/models.py,sha256=4LjnsltPLK4xddz_d_L7I-TnmixyCuqmKV5Mapa2i1I,7603
133
- notionary/database/notion_database.py,sha256=DNsb_YuMg9Fix8OmKMBBN0FSlCGNWbDbG7GIsrSOgK0,16744
134
- notionary/file_upload/__init__.py,sha256=7TNyiIgLMD_IGRXTwRiAmStokF3rLoG4zXPwNb9KQqk,168
135
- notionary/file_upload/client.py,sha256=yzVCHVPkkQfPWb6Nz2QUC6XO21KJahddili2XnCTmvc,8582
136
- notionary/file_upload/models.py,sha256=bSNgw5WzkOuotyalqkkcVC_Ue6YRHR-CSJV7nZRV_RY,1768
137
- notionary/file_upload/notion_file_upload.py,sha256=vOEEh8g8Sj4JedrK9e-NYjJ0HXH3iGdM5N74kkVXVZQ,13221
138
- notionary/page/client.py,sha256=IOsjWOsmODxOq-7OF0y-gcuC2HUbMIT0SvJZHrH9weQ,4520
139
- notionary/page/markdown_whitespace_processor.py,sha256=SbWLL6bdeTGds_khDNX2mQe00lGYUFvH6PX8_xpNvBA,4634
140
- notionary/page/models.py,sha256=zk9QOgCDzVfYfT1Gp2bL1_Bw-QUyfWxwTTIPzIayQ7g,6945
141
- notionary/page/notion_page.py,sha256=_Hj0U9gl3laRKs3l1Cd8tBODXZrHYxrK2Z5gw0O0Fvo,25146
142
- notionary/page/page_content_deleting_service.py,sha256=G3im6VotG1tgI-SaqoQR-gSnOloF6CEnft1qxLps4as,4546
143
- notionary/page/page_content_writer.py,sha256=t8N7yfW--ac7szvDmTdecFEfcF5Nz95vyCQ-lpYcOUw,3046
144
- notionary/page/page_context.py,sha256=27vrTRZP7NsaS4dEp4pBNR30Re2hh00qKlL3xt4YtpI,1773
145
- notionary/page/property_formatter.py,sha256=_978ViH83gfcr-XtDscWTfyBI2srGW2hzC-gzgp5NR8,3788
146
- notionary/page/reader/handler/__init__.py,sha256=ROMH1KvGGdQ0ANLhmIP_4LtMks9jsTTwnZKP8W0uwls,644
147
- notionary/page/reader/handler/base_block_renderer.py,sha256=HZwv727bvu6suT1-uzK4y-4ci54VCdi0FF_yOJYBB1g,1513
148
- notionary/page/reader/handler/block_processing_context.py,sha256=eSNpjQ3tpOc7sJgEm-2UAwd1UvCf-B4CtHJLS5B0lZA,1001
149
- notionary/page/reader/handler/block_rendering_context.py,sha256=o3ASovI71jtffDeKVtx7hZqg7P6-qXvkWBft7ZqOa_s,1583
150
- notionary/page/reader/handler/column_list_renderer.py,sha256=dPp4q13s5Fkn6HAQ1oFZ6e6phepjnqz_fFuFHSMDJ9c,2023
151
- notionary/page/reader/handler/column_renderer.py,sha256=JkpgS9IbiNkMQozBqfqn341ThmDF71FAv3Rq8ewAa2E,2324
152
- notionary/page/reader/handler/equation_renderer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- notionary/page/reader/handler/line_renderer.py,sha256=4Q4fHRvcWSjuDjTDVPn-My6PF8arfoAjzUqEb2MIg34,2917
154
- notionary/page/reader/handler/numbered_list_renderer.py,sha256=tFDfMYxFme1PuNBNi2kbIb13MGNLP5n2-NpLoEklR1E,3480
155
- notionary/page/reader/handler/toggle_renderer.py,sha256=n-HdxKmD3mwKTbgX-FBe71F-8KmBrYeG-nmjFJUb9Gw,2605
156
- notionary/page/reader/handler/toggleable_heading_renderer.py,sha256=ZfmUbM0D4AvUI-bJIy5sH3Eer31Frg0Gl-hereT4A1w,3386
157
- notionary/page/reader/page_content_retriever.py,sha256=ruzRISReupp5TbVwmVjURBk8wE35YYatNpDFpSpnEEQ,2854
158
- notionary/page/search_filter_builder.py,sha256=m8NbFUoxxCEBpcWZIxClyix8NNzeohsOw7D-Fddi-qA,4599
159
- notionary/page/utils.py,sha256=2nfBrWeczBdPH13R3q8dKP4OY4MwEdfKbcs2UJ9kg1o,2041
160
- notionary/page/writer/handler/__init__.py,sha256=8rAzBvmeaPYoYIB5Fd3XHCKFMmbSdlDZ-C8xN-Qxx0s,794
161
- notionary/page/writer/handler/code_handler.py,sha256=Xn5SitI2fnJkS38_RGtMEY0EOqwy8m-wnqaNetRx7hY,2671
162
- notionary/page/writer/handler/column_handler.py,sha256=JIwvWMPiNsMKAG6UEMpkiglD0kKsXQFu1dP1V6L5Keg,5415
163
- notionary/page/writer/handler/column_list_handler.py,sha256=k_exJ87d8i9MGV_uKxAB_mdpmcf5nfOZQ1bqHUoJHiA,5309
164
- notionary/page/writer/handler/equation_handler.py,sha256=ipS26TfAAOAUmOLPl36oMDurRHxXBfFMFZCrJe2iYUE,2845
165
- notionary/page/writer/handler/line_handler.py,sha256=miuU7MXJj1Ae_B_r4a84s9tJaJ8xWNo-LAeD6RqJ-aM,1163
166
- notionary/page/writer/handler/line_processing_context.py,sha256=F2GxDXIOgvZHxiDP-VDe8JUHGcsszMexPG0W9E9y39E,1739
167
- notionary/page/writer/handler/regular_line_handler.py,sha256=2T8xOi4ybcugMJL-sPyVvU0KRVQzFSPpvLibrixIJLA,3223
168
- notionary/page/writer/handler/table_handler.py,sha256=5r-Uh5Unc0iTbl3PXEDvE6qVCrp6YSprpOP9FRnaLY8,2581
169
- notionary/page/writer/handler/toggle_handler.py,sha256=619JPGxxyfLJ_wlubTTPGK17t5mULDhXM-egpeBcWqc,6013
170
- notionary/page/writer/handler/toggleable_heading_handler.py,sha256=ZChU93q1NXFK9eW0oyR4y8wVXmxpuExPvRE2CxkoPOc,6938
171
- notionary/page/writer/markdown_to_notion_converter.py,sha256=H_VWBBbpYpDzJ-5BkC5vONiyNZ4nHa3BP_8lOry_x9w,5086
172
- notionary/page/writer/markdown_to_notion_converter_context.py,sha256=Tys52QEGOzE_zDICI8W6pawCKSFGAjEqOyWTscUUysU,1033
173
- notionary/page/writer/markdown_to_notion_text_length_post_processor.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
- notionary/page/writer/notion_text_length_processor.py,sha256=WfXGouHs2KUFH1ASqloRkV6y7q2jS4vqbiEEMrmd7Qw,5744
175
- notionary/schemas/__init__.py,sha256=1Wmrf4ZyU08kpvMs6KPFq11WVjSie7eM6b6rwTX9Xgw,76
176
- notionary/schemas/base.py,sha256=iLccLV2gjGZwHFCC8mzhKKZl7MQwD-virUdFdxuJRpA,2536
177
- notionary/shared/__init__.py,sha256=RfgVsRZHe1XVB5AjEwPzd_mSyOwpFKaBEfXMCbrXw7o,81
178
- notionary/shared/name_to_id_resolver.py,sha256=SlxB2vmq1cMIZnL0o3U27wjYQSXeQkKURmKFy-BAqk4,6318
179
- notionary/telemetry/__init__.py,sha256=uzPrvkPIpbzPSHCu-tObCTmZA18l3VWqk42L8WLT-XM,511
180
- notionary/telemetry/service.py,sha256=FujT1ZuSHzTO0Rxa6oKlycE_Y-Qpe5lc59EGzzDf-jc,4725
181
- notionary/telemetry/views.py,sha256=FgFZGYaxP7pRYx-9wg18skMh_MJAwf4W3rCfe9JOZe4,1796
182
- notionary/user/__init__.py,sha256=qcAWjWQVn_3WxAJZpToTj2WuCHhKLdtv3bblmx7SG2U,281
183
- notionary/user/base_notion_user.py,sha256=qeCUmVvi62HZDQMLaT4bEuu6Dkeit8L0hBMtJaNndJI,1502
184
- notionary/user/client.py,sha256=8gHEjiE6aNrKGlo3PMoLhIeO8R5gBgF6W7TDOsM1A4E,4515
185
- notionary/user/models.py,sha256=G6Emj8TqAFTGCmyfKk8hq0bZC_tL7uNdI6USNWTVfP4,2065
186
- notionary/user/notion_bot_user.py,sha256=AbkyBXM2__yNfGd8czxVqDEKvtFuzgQguyL5da5lvcs,7772
187
- notionary/user/notion_user.py,sha256=GyWAGYS3OjMz6jYwETqOSmAS3qsGkwhTR9SDw-qvqTg,8503
188
- notionary/user/notion_user_manager.py,sha256=WVgKRgodwOZU30f6NrPTyOjKwoqUjgj4_sySG_l0AoY,3897
189
- notionary/util/__init__.py,sha256=umFas1H4zUoxibNn-Ff6dTCWt3mkhmAG4Lu2viZ-XAU,386
190
- notionary/util/concurrency_limiter.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- notionary/util/factory_decorator.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
- notionary/util/factory_only.py,sha256=q-ZXUEvQ8lsuD1JQwx-ai6e9Lhie65waRE1BcRhCR_4,1235
193
- notionary/util/fuzzy.py,sha256=y7EroToodFSIQLD0FAfFrPEDXOUlZaDGN9ko3XjfHMw,2063
194
- notionary/util/logging_mixin.py,sha256=WLziC-IVovKIe3n3R-ns3YYE2aP5bZVu0r_y5joxhxY,1690
195
- notionary/util/page_id_utils.py,sha256=AA00kRO-g3Cc50tf_XW_tb5RBuPKLuBxRa0D8LYhLXg,736
196
- notionary/util/singleton.py,sha256=CKAvykndwPRZsA3n3MAY_XdCR59MBjjKP0vtm2BcvF0,428
197
- notionary/util/singleton_metaclass.py,sha256=DMvrh0IbAV8nIG1oX-2Yz57Uk1YHB647DNxoI3pAT3s,809
198
- notionary/workspace.py,sha256=QP4WcOIdQnlVr4M7hpGaFT-Fori_QRhsV-SBC2lnwTU,3809
199
- notionary-0.2.27.dist-info/LICENSE,sha256=zOm3cRT1qD49eg7vgw95MI79rpUAZa1kRBFwL2FkAr8,1120
200
- notionary-0.2.27.dist-info/METADATA,sha256=NabOWlvkZwSL3tGqEiC1DGDd-cWAUNPJaT6hdFH3KAo,9143
201
- notionary-0.2.27.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
202
- notionary-0.2.27.dist-info/RECORD,,