notionary 0.2.23__py3-none-any.whl → 0.2.24__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 (99) hide show
  1. notionary/__init__.py +1 -1
  2. notionary/blocks/__init__.py +3 -1
  3. notionary/blocks/audio/__init__.py +0 -2
  4. notionary/blocks/audio/audio_element.py +92 -49
  5. notionary/blocks/audio/audio_markdown_node.py +4 -17
  6. notionary/blocks/bookmark/__init__.py +0 -2
  7. notionary/blocks/bookmark/bookmark_markdown_node.py +5 -21
  8. notionary/blocks/breadcrumbs/__init__.py +0 -2
  9. notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py +2 -21
  10. notionary/blocks/bulleted_list/__init__.py +0 -2
  11. notionary/blocks/bulleted_list/bulleted_list_markdown_node.py +3 -17
  12. notionary/blocks/bulleted_list/bulleted_list_models.py +0 -1
  13. notionary/blocks/callout/__init__.py +0 -2
  14. notionary/blocks/callout/callout_markdown_node.py +4 -18
  15. notionary/blocks/callout/callout_models.py +3 -4
  16. notionary/blocks/code/code_markdown_node.py +5 -19
  17. notionary/blocks/column/__init__.py +0 -4
  18. notionary/blocks/column/column_list_markdown_node.py +3 -19
  19. notionary/blocks/column/column_markdown_node.py +4 -21
  20. notionary/blocks/divider/__init__.py +0 -2
  21. notionary/blocks/divider/divider_markdown_node.py +2 -16
  22. notionary/blocks/embed/__init__.py +0 -2
  23. notionary/blocks/embed/embed_markdown_node.py +4 -17
  24. notionary/blocks/equation/__init__.py +0 -1
  25. notionary/blocks/equation/equation_element_markdown_node.py +3 -15
  26. notionary/blocks/file/__init__.py +0 -2
  27. notionary/blocks/file/file_element.py +67 -46
  28. notionary/blocks/file/file_element_markdown_node.py +4 -17
  29. notionary/blocks/heading/__init__.py +0 -2
  30. notionary/blocks/heading/heading_markdown_node.py +5 -19
  31. notionary/blocks/heading/heading_models.py +3 -3
  32. notionary/blocks/image_block/__init__.py +0 -2
  33. notionary/blocks/image_block/image_element.py +66 -25
  34. notionary/blocks/image_block/image_markdown_node.py +5 -20
  35. notionary/{markdown → blocks/markdown}/markdown_builder.py +29 -233
  36. notionary/blocks/markdown/markdown_node.py +25 -0
  37. notionary/blocks/mixins/file_upload/__init__.py +3 -0
  38. notionary/blocks/mixins/file_upload/file_upload_mixin.py +320 -0
  39. notionary/blocks/numbered_list/__init__.py +0 -1
  40. notionary/blocks/numbered_list/numbered_list_markdown_node.py +3 -17
  41. notionary/blocks/numbered_list/numbered_list_models.py +3 -3
  42. notionary/blocks/paragraph/__init__.py +0 -2
  43. notionary/blocks/paragraph/paragraph_markdown_node.py +3 -13
  44. notionary/blocks/pdf/__init__.py +0 -2
  45. notionary/blocks/pdf/pdf_element.py +81 -32
  46. notionary/blocks/pdf/pdf_markdown_node.py +5 -18
  47. notionary/blocks/quote/__init__.py +0 -2
  48. notionary/blocks/quote/quote_markdown_node.py +3 -13
  49. notionary/blocks/registry/__init__.py +1 -2
  50. notionary/blocks/registry/block_registry.py +116 -61
  51. notionary/blocks/table/__init__.py +0 -2
  52. notionary/blocks/table/table_markdown_node.py +17 -16
  53. notionary/blocks/table_of_contents/__init__.py +0 -2
  54. notionary/blocks/table_of_contents/table_of_contents_element.py +27 -15
  55. notionary/blocks/table_of_contents/table_of_contents_markdown_node.py +3 -17
  56. notionary/blocks/table_of_contents/table_of_contents_models.py +2 -2
  57. notionary/blocks/todo/__init__.py +0 -2
  58. notionary/blocks/todo/todo_markdown_node.py +9 -20
  59. notionary/blocks/todo/todo_models.py +2 -3
  60. notionary/blocks/toggle/__init__.py +0 -2
  61. notionary/blocks/toggle/toggle_markdown_node.py +5 -19
  62. notionary/blocks/toggleable_heading/__init__.py +0 -2
  63. notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py +6 -23
  64. notionary/blocks/video/__init__.py +0 -2
  65. notionary/blocks/video/video_element.py +110 -34
  66. notionary/blocks/video/video_markdown_node.py +4 -15
  67. notionary/comments/client.py +1 -1
  68. notionary/file_upload/client.py +3 -2
  69. notionary/file_upload/models.py +10 -1
  70. notionary/file_upload/notion_file_upload.py +5 -5
  71. notionary/page/markdown_whitespace_processor.py +129 -0
  72. notionary/page/notion_page.py +35 -40
  73. notionary/page/page_content_deleting_service.py +1 -1
  74. notionary/page/page_content_writer.py +32 -129
  75. notionary/page/page_context.py +0 -5
  76. notionary/page/reader/handler/column_list_renderer.py +2 -2
  77. notionary/page/reader/handler/column_renderer.py +2 -2
  78. notionary/page/reader/handler/line_renderer.py +2 -2
  79. notionary/page/reader/handler/toggle_renderer.py +2 -2
  80. notionary/page/reader/handler/toggleable_heading_renderer.py +2 -2
  81. notionary/page/writer/handler/toggle_handler.py +8 -4
  82. notionary/page/writer/handler/toggleable_heading_handler.py +3 -2
  83. notionary/page/writer/markdown_to_notion_converter.py +74 -30
  84. notionary/schemas/__init__.py +3 -0
  85. notionary/schemas/base.py +73 -0
  86. notionary/shared/__init__.py +1 -3
  87. {notionary-0.2.23.dist-info → notionary-0.2.24.dist-info}/METADATA +16 -1
  88. {notionary-0.2.23.dist-info → notionary-0.2.24.dist-info}/RECORD +91 -93
  89. notionary/blocks/guards.py +0 -22
  90. notionary/blocks/registry/block_registry_builder.py +0 -264
  91. notionary/markdown/makdown_document_model.py +0 -0
  92. notionary/markdown/markdown_document_model.py +0 -228
  93. notionary/markdown/markdown_node.py +0 -30
  94. notionary/models/notion_database_response.py +0 -0
  95. notionary/page/writer/markdown_to_notion_formatting_post_processor.py +0 -73
  96. notionary/page/writer/markdown_to_notion_post_processor.py +0 -0
  97. /notionary/{markdown/___init__.py → blocks/markdown/markdown_document_model.py} +0 -0
  98. {notionary-0.2.23.dist-info → notionary-0.2.24.dist-info}/LICENSE +0 -0
  99. {notionary-0.2.23.dist-info → notionary-0.2.24.dist-info}/WHEEL +0 -0
@@ -12,54 +12,32 @@ from notionary.page.writer.handler import (
12
12
  ToggleableHeadingHandler,
13
13
  ToggleHandler,
14
14
  )
15
- from notionary.page.writer.markdown_to_notion_formatting_post_processor import (
16
- MarkdownToNotionFormattingPostProcessor,
17
- )
18
15
  from notionary.page.writer.notion_text_length_processor import (
19
16
  NotionTextLengthProcessor,
20
17
  )
18
+ from notionary.util.logging_mixin import LoggingMixin
19
+
20
+
21
+ class HandlerOrderValidationError(RuntimeError):
22
+ """Raised when handler chain order is incorrect."""
21
23
 
24
+ pass
22
25
 
23
- class MarkdownToNotionConverter:
26
+
27
+ class MarkdownToNotionConverter(LoggingMixin):
24
28
  """Converts Markdown text to Notion API block format with unified stack-based processing."""
25
29
 
26
30
  def __init__(self, block_registry: BlockRegistry) -> None:
27
31
  self._block_registry = block_registry
28
- self._formatting_post_processor = MarkdownToNotionFormattingPostProcessor()
29
32
  self._text_length_post_processor = NotionTextLengthProcessor()
30
-
31
33
  self._setup_handler_chain()
32
34
 
33
- def _setup_handler_chain(self) -> None:
34
- code_handler = CodeHandler()
35
- equation_handler = EquationHandler()
36
- table_handler = TableHandler()
37
- column_list_handler = ColumnListHandler()
38
- column_handler = ColumnHandler()
39
- toggle_handler = ToggleHandler()
40
- toggleable_heading_handler = ToggleableHeadingHandler()
41
- regular_handler = RegularLineHandler()
42
-
43
- # register more specific elements first
44
- code_handler.set_next(equation_handler).set_next(table_handler).set_next(
45
- column_list_handler
46
- ).set_next(column_handler).set_next(toggleable_heading_handler).set_next(
47
- toggle_handler
48
- ).set_next(
49
- regular_handler
50
- )
51
-
52
- self._handler_chain = code_handler
53
-
54
35
  async def convert(self, markdown_text: str) -> list[BlockCreateRequest]:
55
36
  if not markdown_text.strip():
56
37
  return []
57
38
 
58
39
  all_blocks = await self.process_lines(markdown_text)
59
40
 
60
- # Apply formatting post-processing (empty paragraphs)
61
- all_blocks = self._formatting_post_processor.process(all_blocks)
62
-
63
41
  # Apply text length post-processing (truncation)
64
42
  all_blocks = self._text_length_post_processor.process(all_blocks)
65
43
 
@@ -93,3 +71,69 @@ class MarkdownToNotionConverter:
93
71
  continue
94
72
 
95
73
  return result_blocks
74
+
75
+ def _setup_handler_chain(self) -> None:
76
+ code_handler = CodeHandler()
77
+ equation_handler = EquationHandler()
78
+ table_handler = TableHandler()
79
+ column_list_handler = ColumnListHandler()
80
+ column_handler = ColumnHandler()
81
+ toggle_handler = ToggleHandler()
82
+ toggleable_heading_handler = ToggleableHeadingHandler()
83
+ regular_handler = RegularLineHandler()
84
+
85
+ # Create handler chain
86
+ code_handler.set_next(equation_handler).set_next(table_handler).set_next(
87
+ column_handler
88
+ ).set_next(column_list_handler).set_next(toggleable_heading_handler).set_next(
89
+ toggle_handler
90
+ ).set_next(
91
+ regular_handler
92
+ )
93
+
94
+ self._handler_chain = code_handler
95
+
96
+ # Validate critical order - only log/error if something is wrong
97
+ self._validate_handler_order(
98
+ [
99
+ code_handler,
100
+ equation_handler,
101
+ table_handler,
102
+ column_handler,
103
+ column_list_handler,
104
+ toggleable_heading_handler,
105
+ toggle_handler,
106
+ regular_handler,
107
+ ]
108
+ )
109
+
110
+ def _validate_handler_order(self, handlers) -> None:
111
+ """Validate critical handler positioning rules - only warns/errors when needed."""
112
+ handler_classes = [handler.__class__ for handler in handlers]
113
+
114
+ # Critical: ColumnHandler MUST come before ColumnListHandler
115
+ try:
116
+ column_handler_pos = handler_classes.index(ColumnHandler)
117
+ column_list_handler_pos = handler_classes.index(ColumnListHandler)
118
+
119
+ if column_handler_pos >= column_list_handler_pos:
120
+ error_msg = (
121
+ f"CRITICAL: ColumnHandler must come BEFORE ColumnListHandler. "
122
+ f"Current order: ColumnHandler at {column_handler_pos}, ColumnListHandler at {column_list_handler_pos}. "
123
+ f"Fix: Move ColumnHandler before ColumnListHandler in _setup_handler_chain()"
124
+ )
125
+ self.logger.error(error_msg)
126
+ raise HandlerOrderValidationError(error_msg)
127
+
128
+ except ValueError as e:
129
+ error_msg = f"Missing required handlers in chain: {e}"
130
+ self.logger.error(error_msg)
131
+ raise HandlerOrderValidationError(error_msg)
132
+
133
+ # Critical: RegularLineHandler should be last (fallback)
134
+ if handler_classes[-1] != RegularLineHandler:
135
+ error_msg = (
136
+ f"WARNING: RegularLineHandler should be last handler (fallback), "
137
+ f"but {handler_classes[-1].__name__} is at the end"
138
+ )
139
+ self.logger.warning(error_msg)
@@ -0,0 +1,3 @@
1
+ from .base import NotionContentSchema
2
+
3
+ __all__ = ["NotionContentSchema"]
@@ -0,0 +1,73 @@
1
+ """
2
+ NotionContentSchema Base Class
3
+ =============================
4
+
5
+ Base class for all Notion structured output schemas with injected MarkdownBuilder
6
+ """
7
+
8
+ from pydantic import BaseModel
9
+ from notionary.blocks.markdown.markdown_builder import MarkdownBuilder
10
+
11
+
12
+ class NotionContentSchema(BaseModel):
13
+ """
14
+ Base class for all Notion content schemas.
15
+
16
+ Inherit from this and implement to_notion_content() to create
17
+ schemas that work with LLM structured output.
18
+
19
+ Example usage:
20
+
21
+ class BlogPost(NotionContentSchema):
22
+ title: str = Field(description="Catchy blog post title")
23
+ introduction: str = Field(description="Engaging opening paragraph")
24
+ main_points: List[str] = Field(description="3-5 key takeaways")
25
+ conclusion: str = Field(description="Summary and call-to-action")
26
+
27
+ def to_notion_content(self, builder: MarkdownBuilder) -> str:
28
+ return (builder
29
+ .h1(self.title)
30
+ .paragraph(self.introduction)
31
+ .h2("Key Points")
32
+ .bulleted_list(self.main_points)
33
+ .h2("Conclusion")
34
+ .paragraph(self.conclusion)
35
+ .build()
36
+ )
37
+
38
+ # Usage with LLM:
39
+ llm = ChatOpenAI(model="gpt-4o")
40
+ structured_llm = llm.with_structured_output(BlogPost)
41
+ blog = structured_llm.invoke("Write about Python async/await")
42
+
43
+ # Upload to Notion:
44
+ await blog.append_to_page("My Blog")
45
+ """
46
+
47
+ def to_notion_content(self, builder: MarkdownBuilder) -> str:
48
+ """
49
+ Build Notion content using the provided MarkdownBuilder.
50
+
51
+ Args:
52
+ builder: Empty MarkdownBuilder instance to build content with
53
+
54
+ Returns:
55
+ str: The final markdown string (user should call build() on the builder)
56
+ """
57
+ raise NotImplementedError("Subclasses must implement to_notion_content()")
58
+
59
+ async def append_to_page(self, page_name: str):
60
+ """
61
+ Upload this content directly to a Notion page.
62
+
63
+ Args:
64
+ page_name: Name of the target Notion page
65
+ """
66
+ from notionary import NotionPage
67
+
68
+ # Create fresh builder and let subclass build content
69
+ builder = MarkdownBuilder()
70
+ markdown = self.to_notion_content(builder)
71
+
72
+ page = await NotionPage.from_page_name(page_name)
73
+ await page.append_markdown(markdown)
@@ -1,5 +1,3 @@
1
1
  from .name_to_id_resolver import NameIdResolver
2
2
 
3
- __all__ = [
4
- "NameIdResolver"
5
- ]
3
+ __all__ = ["NameIdResolver"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: notionary
3
- Version: 0.2.23
3
+ Version: 0.2.24
4
4
  Summary: Python library for programmatic Notion workspace management - databases, pages, and content with advanced Markdown support
5
5
  License: MIT
6
6
  Author: Mathis Arends
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Dist: aiofiles (>=24.1.0,<25.0.0)
16
17
  Requires-Dist: httpx (>=0.28.0)
17
18
  Requires-Dist: posthog (>=6.3.1,<7.0.0)
18
19
  Requires-Dist: pydantic (>=2.11.4)
@@ -64,6 +65,13 @@ NOTION_SECRET=your_integration_key
64
65
 
65
66
  ### Simple Flow: Find → Create → Update
66
67
 
68
+ <video width="100%" controls>
69
+ <source src="./static/demo.mp4" type="video/mp4">
70
+ Your browser does not support the video tag.
71
+ </video>
72
+
73
+ _Demo: Converting markdown to structured Notion content with callouts, columns, and tables_
74
+
67
75
  ```python
68
76
  import asyncio
69
77
  from notionary import NotionPage, NotionDatabase
@@ -111,6 +119,13 @@ asyncio.run(main())
111
119
 
112
120
  ### Create Rich Database Entries
113
121
 
122
+ <video width="100%" controls>
123
+ <source src="./static/create_page_in_database_demo.mp4" type="video/mp4">
124
+ Your browser does not support the video tag.
125
+ </video>
126
+
127
+ _Demo: Creating a styled project page in a Notion database with properties, content, and rich formatting_
128
+
114
129
  ```python
115
130
  # Work with databases - connect and create styled entries
116
131
  db = await NotionDatabase.from_database_name("Projects")
@@ -1,28 +1,28 @@
1
- notionary/__init__.py,sha256=u6I31uJ8E_lqg17QIzylzz-mnvnLc4hmVuBGvnDwFgI,607
1
+ notionary/__init__.py,sha256=qFQ-hZah6dNnzgDYUfx7ifrkyXWpJoKFk1rwZyVuUSE,614
2
2
  notionary/base_notion_client.py,sha256=EKExy91oeVHdknK-XU2IkKB6SJgN96ZfbblRK05wnV4,7071
3
- notionary/blocks/__init__.py,sha256=CGaDCEmUepqnjkcm7X1OKdxAhtbcIZAu3fxJeySyu6o,76
3
+ notionary/blocks/__init__.py,sha256=-SsbyEnYg4YbrpJgE1zFRTelwIWva-QRqDZZZV2sTkY,85
4
4
  notionary/blocks/_bootstrap.py,sha256=8xs6EDSPdGNr7NsrxmH2pg1dvVjfbghX5N74tRALKog,9450
5
- notionary/blocks/audio/__init__.py,sha256=3158rsK4MIO_vBQV0kfZWIOKd5Cout72bdJljP-f7KM,368
6
- notionary/blocks/audio/audio_element.py,sha256=owVZmgsEulL7NBexp0smMBONXj8uVVesup7970vLfOg,4615
7
- notionary/blocks/audio/audio_markdown_node.py,sha256=xYaKYJq7OZ3ky5BxActwFYESNoPBtw3VjCjmEeD9ep0,1140
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
8
  notionary/blocks/audio/audio_models.py,sha256=ts281Wgjh0FQBK4a6IKKNGPcG0U18T1euCgo83-JSg4,229
9
9
  notionary/blocks/base_block_element.py,sha256=r9W3EHIwQ2A824x2MlFGTfQpZjMvfB-fUVTI2x3peyc,1546
10
- notionary/blocks/bookmark/__init__.py,sha256=ofLnuXlG-y0C3ex-noLA92iXUFjiej5CyrxVXG_1db4,447
10
+ notionary/blocks/bookmark/__init__.py,sha256=Sln6BmxZBV-7ZaVDOSEWQ8pOL-ZHWHN25EjgqxPbIqQ,377
11
11
  notionary/blocks/bookmark/bookmark_element.py,sha256=y6wkdRor3cn9n5gE1pFnH6bc5B43YYqrwWHTXrC0GPs,3399
12
- notionary/blocks/bookmark/bookmark_markdown_node.py,sha256=5DCTQ8AlGLiJUUl4Z0WGEGF4IrJ127f3KNGFm2ZD-ug,1383
12
+ notionary/blocks/bookmark/bookmark_markdown_node.py,sha256=O9HpnQQpTwZdSYk0eTP0NNw2mL4c8Mob4jl6DmBjnhY,939
13
13
  notionary/blocks/bookmark/bookmark_models.py,sha256=kJTitF93xd0YITvP_FuwpjnBUNLeDMr7fDAXV8MAJrk,375
14
- notionary/blocks/breadcrumbs/__init__.py,sha256=vw7--1u5TAcX4l3J0eu98HbxG6wxsnPrkt7YouT_ESA,498
14
+ notionary/blocks/breadcrumbs/__init__.py,sha256=dcy-EsClgdlUqEDJSKBYvZBEttCGemABaeqZcZp5jKc,424
15
15
  notionary/blocks/breadcrumbs/breadcrumb_element.py,sha256=cVZHiMqaYL4EGphnX1OCh3Inf93TFwFosB-1PGCS2do,1268
16
- notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py,sha256=tbcQOzMHx-dQGa5UAE2jowzPM_wItsb76bCGU4YIKw4,745
16
+ notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py,sha256=XxJoC_2TwfkE0bxeWeisRGCA2Qhg66G27qBxsmiyjGc,359
17
17
  notionary/blocks/breadcrumbs/breadcrumb_models.py,sha256=-XGIIMYiQuGe5iXmW-1Y9Y9Yca0w6u3HbiD1SBue8sI,237
18
- notionary/blocks/bulleted_list/__init__.py,sha256=2EvFm2h-X6KUHGQhQiOYBqh-DvZbL0qT453eokd8eyw,549
18
+ notionary/blocks/bulleted_list/__init__.py,sha256=ypxv5AGCrkiOUCcLni3iVg3-XfWHZB9Ksf5GV6DOlkU,471
19
19
  notionary/blocks/bulleted_list/bulleted_list_element.py,sha256=YY2kOCgFinD7Mk6Ns9KLxm4KlNtlZoT87zcrEpq97HM,3095
20
- notionary/blocks/bulleted_list/bulleted_list_markdown_node.py,sha256=1MmGbQAbkeV3vwPlqC4ItcR-Abw8JymYWyGLEV2-HfI,827
21
- notionary/blocks/bulleted_list/bulleted_list_models.py,sha256=2rOHv8KIfTcx0z4JtK968BnLc4lkCrF8So-e5QL_FEY,561
22
- notionary/blocks/callout/__init__.py,sha256=iDLuJ4szAOY4tCL0NK_bqCzlTC109o51c1cGgDoruZg,431
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
23
  notionary/blocks/callout/callout_element.py,sha256=6Ss1jv1cqAM4GuNGvuy7dCFjpp-dLavf-wXevn3IEmw,3575
24
- notionary/blocks/callout/callout_markdown_node.py,sha256=TMd2wQ0BfoQ0mgHSy5MrqCvpJvovSw7zsLrXnRrJoQs,948
25
- notionary/blocks/callout/callout_models.py,sha256=KabWhRCkW1KmTGqt23QTc5iCeVczIzRHIVevEagcKE0,860
24
+ notionary/blocks/callout/callout_markdown_node.py,sha256=2zZNMwg8uiGBqaMOUVOTlIK8kiq20IQ0Ylv7ZFUm-bc,602
25
+ notionary/blocks/callout/callout_models.py,sha256=E58ko2ujDV80HlI20S9etbCMTm6a_IaSp9waUozWTa8,863
26
26
  notionary/blocks/child_database/__init__.py,sha256=FzjjHOS9Je2oXuxLK9S9Oq56-EDEZRTJBfDzkacFpY0,368
27
27
  notionary/blocks/child_database/child_database_element.py,sha256=1pxtoB_XTIWorYp984TpsPMZy8A5IdQ15nJALyzme-c,2279
28
28
  notionary/blocks/child_database/child_database_models.py,sha256=SP6S9tKTetKNdCkYY3QCxeXd2lq1DyfdNvDhKlhD22Q,264
@@ -32,92 +32,95 @@ notionary/blocks/child_page/child_page_models.py,sha256=LZhziu2nf-8FopcaQi6dJKOJ
32
32
  notionary/blocks/client.py,sha256=9rhfWM3LNxYrB0bez2RKLGE2gVnBaJbrQa1qu6FSKVE,8692
33
33
  notionary/blocks/code/__init__.py,sha256=8mTDHndNb4kzDByETe2gG7-YHMrt18cf_gmV60JXHOc,345
34
34
  notionary/blocks/code/code_element.py,sha256=-8b63RxD7qJzOkMMF_eLo-z9TdsI33r0JUJc5cyFAzs,5661
35
- notionary/blocks/code/code_markdown_node.py,sha256=r25-n8FkV2alrAionnaZIPVGYLnmEw0zeJ_5HpBTWh8,3050
35
+ notionary/blocks/code/code_markdown_node.py,sha256=ZfZE9JOmBwAvkEua0wA_W9wCAjl52YBq4UrTBVlVjRM,2655
36
36
  notionary/blocks/code/code_models.py,sha256=hK-Ka9whQO-xWASr0sbhRcz-FUc5VY5Pjqa8LPW041o,2178
37
- notionary/blocks/column/__init__.py,sha256=KFza6GKRjVa59ktp0euAVSq1oblK_KXSqAfrOIiT9ps,838
37
+ notionary/blocks/column/__init__.py,sha256=r0XRwU3cEo6Te-4XkiVOPtd_VHlEVchgoI7e-jNQ9Ic,698
38
38
  notionary/blocks/column/column_element.py,sha256=1BtZ5EWq1QpUEAh-OEpvZOTZfeFFDyDKCZCSo8nskJw,2338
39
39
  notionary/blocks/column/column_list_element.py,sha256=gyAZ_Q79g5sEp24IbHHXZvyX8BRmN1jo6ahoVxXxR4E,2398
40
- notionary/blocks/column/column_list_markdown_node.py,sha256=RXwPz-d-vfAb39HZapaXiomuY8eKkUuBBEm7rPyLHl0,1396
41
- notionary/blocks/column/column_markdown_node.py,sha256=Nc7QReXOWZ0CIuUpgE9dhME4bINo18P1luC6bL0bpPA,1632
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
42
  notionary/blocks/column/column_models.py,sha256=Dv1jBWmuFjjSqyOajkh05jmxEwxF9b-LuDA4Sgw8RJI,664
43
- notionary/blocks/divider/__init__.py,sha256=GX3D_Oksg65Dam4lRGdrOGWuZec35ghuYuvF9HDt_y8,431
43
+ notionary/blocks/divider/__init__.py,sha256=rDbsdRmtXBVh-5LgmgO0Wq4y6jChy7lpxyaUd5WU2wk,363
44
44
  notionary/blocks/divider/divider_element.py,sha256=MHPctdc5-EwxTrcoA4EjEgiFzWnDZqHziKBoz6xZMrQ,1395
45
- notionary/blocks/divider/divider_markdown_node.py,sha256=XMa4txNnzeJPheNKke4poD5t36DE0Fqj963-QZ3gh8M,583
45
+ notionary/blocks/divider/divider_markdown_node.py,sha256=2yZYUMeNNG8ncmwzrn-WDj4JHAhYyaPyb9mQGNk22Cg,314
46
46
  notionary/blocks/divider/divider_models.py,sha256=A7jUBYZnE_yRLTZi-sr9sbDCrWNhAdriFNzCpDEBwGU,219
47
- notionary/blocks/embed/__init__.py,sha256=EgWphqJaJdt3CMjILKEjVexDSTz1KU0NE2rMDNZaCQ0,399
47
+ notionary/blocks/embed/__init__.py,sha256=yQehCntnQpyyP0qS6H0HpZlTg2jdOJo47kb-Gq0O8Ec,335
48
48
  notionary/blocks/embed/embed_element.py,sha256=xzDBA4OS2O4OASXRoy2oFO5WEm3hF4dVEryokGm8bwk,3594
49
- notionary/blocks/embed/embed_markdown_node.py,sha256=8pcLAT4Il1e50wIdCSL11Leq6fnGLOlwNAuKTFY-i98,908
49
+ notionary/blocks/embed/embed_markdown_node.py,sha256=0VJg6THsgVOGxxA7U-GakzNyNHDt7yqC8SJM3kvIO48,563
50
50
  notionary/blocks/embed/embed_models.py,sha256=utXtHlIIK5QA24ZJW7l0XfDtrt12DureH1DugOi9mNw,366
51
- notionary/blocks/equation/__init__.py,sha256=XP4BgCG-CFXoNI9oUBofg7j2ygZasqdJWhVbJG98kyc,455
51
+ notionary/blocks/equation/__init__.py,sha256=-6JSN3DSmf56TgkAeClAkfhH3jtHIx0MPSD2NQBRh7Q,421
52
52
  notionary/blocks/equation/equation_element.py,sha256=EME_KVHjdO9e7xnuFxlmkbzRcL1b8LrEikYzXXZGNMM,4750
53
- notionary/blocks/equation/equation_element_markdown_node.py,sha256=9Hj6S5uNMWbbHWdKRskLZyCvl8Q8B2HpDS__aZsXDmc,911
53
+ notionary/blocks/equation/equation_element_markdown_node.py,sha256=VIPSdhsyh5xhGq5INY4I8dvjNZlW_2536YmdGlfwnqM,612
54
54
  notionary/blocks/equation/equation_models.py,sha256=WIpnqHmwh2rpNTVvt6eFNzkhHejW8XMWDQbwtLIcxKw,245
55
- notionary/blocks/file/__init__.py,sha256=kYPp8iJ-EDWi1BX5E-OkgV_QacQ8ysKn__whyXXEWIw,577
56
- notionary/blocks/file/file_element.py,sha256=ShjPjsUolIrBJyTHm_QORq_aNanQwJQ0ZFNj-0wfuaA,4394
57
- notionary/blocks/file/file_element_markdown_node.py,sha256=YJoMkmlbcz7FsysnDMTc7EGubJKdRr8u1zyUnaUtgsU,1148
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
58
  notionary/blocks/file/file_element_models.py,sha256=1eia1-OamnF52AUYtC3Ru-xi6HHsnjw9hcuslkHKXuI,850
59
- notionary/blocks/guards.py,sha256=WaZLfPWUcoPwLzhBUQ5vvVM07dZpCXnw2ObtF1mM62c,586
60
- notionary/blocks/heading/__init__.py,sha256=dg2hCVsqWv84hvtb6HAb4m1i8b0jyLXokPIYwe5NwZ8,557
59
+ notionary/blocks/heading/__init__.py,sha256=aaHtYkTQwCd7vMS4gaRYMuIS3oBhnwUJHEtMmHIzLkM,489
61
60
  notionary/blocks/heading/heading_element.py,sha256=Hdnlzj94AoYCMYZuVOl91tREn1S6hwolA4vWwMtAFWk,3894
62
- notionary/blocks/heading/heading_markdown_node.py,sha256=I8_9fg_CsZ-iTMA6PV6V8DBxwa5BDcMfF6NS70iKCbo,881
63
- notionary/blocks/heading/heading_models.py,sha256=nOEnb66tYt_653PIt-AqjGaOgefFOK6hKG09epCKSSc,794
64
- notionary/blocks/image_block/__init__.py,sha256=ACOCt1hVFzGm_l9Vb0GVATN7PZNBg7jFp1FymrAi8lw,386
65
- notionary/blocks/image_block/image_element.py,sha256=02Xkvg4IYZhx5Bb8RBQQAfg7I1fwkrFPGwTW-aMAcus,3610
66
- notionary/blocks/image_block/image_markdown_node.py,sha256=KpE2FFetUZh96ppuXkpOfauchgT5eWxqZQmfRotK-qY,1280
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
67
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
68
70
  notionary/blocks/mixins/captions/__init__.py,sha256=hGq6UOBiSgnaWB9UXgvtuG2sLPNgs5GAaz-8vrBmh2Q,166
69
71
  notionary/blocks/mixins/captions/caption_markdown_node_mixin.py,sha256=uaT_k7cfJgDhvdAavPmRJJHeEcwVECe21dcawcffHVE,1021
70
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
71
75
  notionary/blocks/models.py,sha256=cwUgc3wjrKA6MiEnZzCpHS35Y54jPHlIrKRPUNjZm0s,5835
72
- notionary/blocks/numbered_list/__init__.py,sha256=NcHMDTveGoYccNo6SYBgPdrIX_ZEAh37jOVpvWFKa4s,549
76
+ notionary/blocks/numbered_list/__init__.py,sha256=Q6fCQ0j9UAas8hgMiTtXpCP-RxglVnNeRK4naFgDppw,511
73
77
  notionary/blocks/numbered_list/numbered_list_element.py,sha256=ZPoLYCj0xJXeWdjeJImuTeVWd1fqeByLzMj29V4Yf1Y,2755
74
- notionary/blocks/numbered_list/numbered_list_markdown_node.py,sha256=Lf2QyBQql1JGPKrI-55ywpMcNGvoQDgKQelK5XNrSZU,785
75
- notionary/blocks/numbered_list/numbered_list_models.py,sha256=dx2abI0GawwfjGnOKKUCtM5kzMs_fSFiHOZM3vOM3d4,587
76
- notionary/blocks/paragraph/__init__.py,sha256=GjDP9az7qoYeDAaYR0utq6f0F8cFaDb-JhobLhf7ZRY,479
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
77
81
  notionary/blocks/paragraph/paragraph_element.py,sha256=cp90cL0hi9gvIoefmxd-U_xM4z5YiTYt3yO7NQ-Hyvg,2478
78
- notionary/blocks/paragraph/paragraph_markdown_node.py,sha256=PCu_KLDk5iIJ2jqB0QYziYDridrrE-Mg_ajfALh8p2s,669
82
+ notionary/blocks/paragraph/paragraph_markdown_node.py,sha256=aCYJv58EiyKi-DgQEbkwnkZT4NTANHAnWzoOzVQ1cBc,436
79
83
  notionary/blocks/paragraph/paragraph_models.py,sha256=Hm4IXYNrKqNqMy6QUt6SnIiVNZU_4a-27BH7fNBjc0o,429
80
- notionary/blocks/pdf/__init__.py,sha256=NHoP43hIioaAG5GFIkNu5e962oc57xdzax5VdeEklBo,338
81
- notionary/blocks/pdf/pdf_element.py,sha256=AIUe2FFlYnxV_WpcMD9MNI4bFDajYJ9z5hikBE1_p-k,4056
82
- notionary/blocks/pdf/pdf_markdown_node.py,sha256=V1J9egeGlvvo4zBTb1Eyv1vQ1oGuWxdm0rJ1naIMjg0,1156
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
83
87
  notionary/blocks/pdf/pdf_models.py,sha256=k3GB01LNDWnvcxj-gtHSMYAwElrDqFdXkw6DFjlpZNY,293
84
- notionary/blocks/quote/__init__.py,sha256=xb5JY4k6naDYkqSQopWvTj2L9YTNMmFOaFingjUbOkU,444
88
+ notionary/blocks/quote/__init__.py,sha256=Hu3v0RfYH-9CSKazI2IcaddaePY8c6Y7o03qsppruZw,380
85
89
  notionary/blocks/quote/quote_element.py,sha256=X7YZrhg94rgvWuRi96hbetbMx_FJbYGsmto1P_Am34I,2795
86
- notionary/blocks/quote/quote_markdown_node.py,sha256=G0539a5xeMMViAzTz5PvN8KYwSZgwrs8itUfXkZ2qlQ,630
90
+ notionary/blocks/quote/quote_markdown_node.py,sha256=o7oe6XY0s1zocC79SVRLGIZ0VoGHv5znXzBtTTN47EQ,405
87
91
  notionary/blocks/quote/quote_models.py,sha256=XT1hDfYw8SZUEg-rPfHiC4_0LNVWK-Vs7J6h9PIGgNE,506
88
- notionary/blocks/registry/__init__.py,sha256=Het-sHkwxg8c0A1GlPvpm6Ca-GwfN-II55YIpLb-__A,156
89
- notionary/blocks/registry/block_registry.py,sha256=B01_6jwrIExvMpgxFHDD8P3mXtrkK0SDriNhV7o7NWY,3195
90
- notionary/blocks/registry/block_registry_builder.py,sha256=a-oID7OpW4b1bEhhsQOOnwK8evlJem-MralvdhaMYno,8866
92
+ notionary/blocks/registry/__init__.py,sha256=NswYfZQLLUlLlR5Gtdg1tAafyO9lXLldbeC5Y7WgLYk,74
93
+ notionary/blocks/registry/block_registry.py,sha256=N26nAWoNxfBlSt4gTWiJ1mqjajkcj2anAt9iDht1vDk,5394
91
94
  notionary/blocks/rich_text/__init__.py,sha256=UuOn0MmGKNqK3fLBnEcH2surwbDkZ4GF8Gpn4TLNwLc,773
92
95
  notionary/blocks/rich_text/rich_text_models.py,sha256=QPCHA-vo8DoH7sLAVzOXervoeeV39JRuJkR-IGVA63Y,6278
93
96
  notionary/blocks/rich_text/text_inline_formatter.py,sha256=8J8y27OuMLX-IvSJs0Ogmvw0gw1bgQD9n55nRjSldbg,18379
94
97
  notionary/blocks/syntax_prompt_builder.py,sha256=VwvpR8JyyKR13_ni0jUt--F7w6DoD_nzJB2LbwiJXJc,4626
95
- notionary/blocks/table/__init__.py,sha256=Vrs6w_P63cFptV-gVuDpFbU5Rg-bDf3Tf_jUk0n-s-I,511
98
+ notionary/blocks/table/__init__.py,sha256=Z9AJN899NDlGP8M0AnMBBJmy2XqZ5jLz2-EXr-u3YV0,447
96
99
  notionary/blocks/table/table_element.py,sha256=eeqFHlyQ1dG1ZxB3zdrdvF5qXPsLqSEVyNQJ70W9Rwg,8002
97
- notionary/blocks/table/table_markdown_node.py,sha256=9TJj0C380U-1iykAFouMGtlEM00Ig5-u9lmaWa-nPR8,1402
100
+ notionary/blocks/table/table_markdown_node.py,sha256=PJRgcCrChQQd_REuqmxRpYeKqMXQj_fd8o7O69c930A,1330
98
101
  notionary/blocks/table/table_models.py,sha256=P0VUkX8FOE6aFWAyhOVVMVAYGtj_LO0sqSYtlbyCpQA,643
99
- notionary/blocks/table_of_contents/__init__.py,sha256=m79PbE4vhG6UlJ8UFNQDU14_JUHxluLlPGWzgpcGkUo,598
100
- notionary/blocks/table_of_contents/table_of_contents_element.py,sha256=p4bYHB3jvkptdaB_fjKdqw_LTZmxckuXOKVUiikyc5I,2622
101
- notionary/blocks/table_of_contents/table_of_contents_markdown_node.py,sha256=en8NdehkYl6mntphjnIwCZPGXnN2o2XTQm3Q5X-hZ_o,897
102
- notionary/blocks/table_of_contents/table_of_contents_models.py,sha256=ECC5m-q-nDX34XWAqlt5sONxlbQSB0LhLJZpsjpV5xk,531
103
- notionary/blocks/todo/__init__.py,sha256=HBjy9vRu1yEUk_P4-el1aZMw9SRwpJXGcFFtUEp4Xb8,383
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
104
107
  notionary/blocks/todo/todo_element.py,sha256=8rH84wHH1FEFnVd76AZrT-c-BpkwaN9hLQK7CWMCbBY,3092
105
- notionary/blocks/todo/todo_markdown_node.py,sha256=MBRHtUQBNvJdX0plxY02r-XW7vkzBc_PFZxtW03UrHo,996
106
- notionary/blocks/todo/todo_models.py,sha256=ADM2YEFPn6zXan5paS6-eYKqa9-HQ52FQjfUVInJoBI,530
107
- notionary/blocks/toggle/__init__.py,sha256=kMNpgbKBFoFaOXcfYsNOzHEpBjTZBmYEzXapysbtjNs,415
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
108
111
  notionary/blocks/toggle/toggle_element.py,sha256=O_gv3Xz0vxtJ3-1Hi07xBbrpgLDo9FKZ_OESOhbvpAQ,4618
109
- notionary/blocks/toggle/toggle_markdown_node.py,sha256=EFGSFVsnl7bM6wm-geQ7tUplHyyZrCzZnwVzb-NbcO8,1270
112
+ notionary/blocks/toggle/toggle_markdown_node.py,sha256=qFVZsoksi82t4Iy5WwsUE9nDu4VOb8t35vgkHmkFOmU,862
110
113
  notionary/blocks/toggle/toggle_models.py,sha256=Tkqmz7bzKX7v-T9xWZLy9Eiw_ksGg4UZaacE30uZmwI,521
111
- notionary/blocks/toggleable_heading/__init__.py,sha256=hk43FCDhkSg_QbHEucXSBd96-Gj1tIMwiRxQY-vPREA,412
114
+ notionary/blocks/toggleable_heading/__init__.py,sha256=96BPG37gqHtOxWiBemrubK8AyIBtbTJuRDUn7imEHLY,324
112
115
  notionary/blocks/toggleable_heading/toggleable_heading_element.py,sha256=y3tBDWmi3IeyhFyJEmsFndhlrQls5XhJVUGUVORnXUY,4428
113
- notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py,sha256=kSo7rnYjX_9PT6kfmCbMCvndwNbtHNnLYdtznXhWXe4,1626
116
+ notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py,sha256=lqUChE-4NOvtFxhTjg0uRBWT7WQI5hd5arHJ6eBkKno,1056
114
117
  notionary/blocks/types.py,sha256=qAmcxIGQcekrLsbNZVjOcI3HYmvHz5bzFFj8Asuh8JI,3567
115
- notionary/blocks/video/__init__.py,sha256=z_lz1agYtSRv9A9bFRwPlpzmpfgf49w9uJMVkHTTsR0,376
116
- notionary/blocks/video/video_element.py,sha256=nDYcr1HwCZYVBSLPEo1qHuqU9AQ8yzS9OHQTIe3rVyA,4417
118
+ notionary/blocks/video/__init__.py,sha256=eDWiVkZYbsXqgBhdHY2ge9R21ml7-BTAMJ3T3HCajdY,312
119
+ notionary/blocks/video/video_element.py,sha256=D8CrlxKSrgRpBE9O9i1Udir85dFq3r3CYRabSIWWxWI,7149
117
120
  notionary/blocks/video/video_element_models.py,sha256=CYK2tq0qhrOxjO_ctOgRvEHM9hLjQCBXrP7wcTNlUPw,229
118
- notionary/blocks/video/video_markdown_node.py,sha256=u5OaoxLzg10PAdvo70OYgi1d-eFtTK_kUdYLAKQWdtM,1151
121
+ notionary/blocks/video/video_markdown_node.py,sha256=ORbLqVvl_o9YJrDOLUOMk7mnxyl1NSKjbMDwLPbdCSM,844
119
122
  notionary/comments/__init__.py,sha256=G0OWsaN2VgbykvhLlNSweL_f0bl16j9NpidH2UNbFcQ,529
120
- notionary/comments/client.py,sha256=c8mgHKVjMxC-ssuu4nv34S3788icCWSZQS-a1AZXM48,7309
123
+ notionary/comments/client.py,sha256=vWjgPFk_TPY7peq10aJc7WTG-b0q6Fn8qirAlzlqLls,7311
121
124
  notionary/comments/models.py,sha256=O2-yg-0Xrs8xrzLUa4793FlyNn3HbTRsv4dqaskI6ps,3409
122
125
  notionary/database/__init__.py,sha256=4tdML0fBzkOCpiWT6q-L--5NELFLbTPD0IUA_E8yZno,155
123
126
  notionary/database/client.py,sha256=mN_8XHvIQkRxiWbgBfvncgw4IRiCFX3bVLMLBvtk1Ig,5398
@@ -129,33 +132,28 @@ notionary/database/factory.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
129
132
  notionary/database/models.py,sha256=4LjnsltPLK4xddz_d_L7I-TnmixyCuqmKV5Mapa2i1I,7603
130
133
  notionary/database/notion_database.py,sha256=DNsb_YuMg9Fix8OmKMBBN0FSlCGNWbDbG7GIsrSOgK0,16744
131
134
  notionary/file_upload/__init__.py,sha256=7TNyiIgLMD_IGRXTwRiAmStokF3rLoG4zXPwNb9KQqk,168
132
- notionary/file_upload/client.py,sha256=X3LInvHWuJgiL_phytLRzW6rrocXegm30TmTL0sCcfY,8531
133
- notionary/file_upload/models.py,sha256=bbACznMXdg7WAlAZ6uJ6qVAj7r3GP9LlEv2T5hxcIrI,1621
134
- notionary/file_upload/notion_file_upload.py,sha256=Ul3CMicJpUodUa3SU3ihrkWU_Wa5z36mKOqSVXNc_DM,13173
135
- notionary/markdown/___init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
- notionary/markdown/makdown_document_model.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
- notionary/markdown/markdown_builder.py,sha256=q9J7FduIxrf8hSPu_5P4ZwYaGVZdvpe-qa0dyaRsBJ0,26379
138
- notionary/markdown/markdown_document_model.py,sha256=i9zMINcTlTwlqpHV9zeQfMVlni2VAl6BMjAdKSdoUeg,6409
139
- notionary/markdown/markdown_node.py,sha256=u8ApehnTCo1KnTFbtYzGuTAyUQrYPc3RSMJaUMyg0LI,717
140
- notionary/models/notion_database_response.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
141
138
  notionary/page/client.py,sha256=IOsjWOsmODxOq-7OF0y-gcuC2HUbMIT0SvJZHrH9weQ,4520
139
+ notionary/page/markdown_whitespace_processor.py,sha256=SbWLL6bdeTGds_khDNX2mQe00lGYUFvH6PX8_xpNvBA,4634
142
140
  notionary/page/models.py,sha256=pD8FlK8KtnUrIITTd2jg_yJICakgPE4ysZiS9KiMpr0,7088
143
- notionary/page/notion_page.py,sha256=4X13kJWzJIoB7pFrfNbrIvLCQ2j4HKPOesblr6FM6d8,23903
144
- notionary/page/page_content_deleting_service.py,sha256=ZxGUMmT7k85IPLALfZkIJ5oQA3tMHWVW4acjdp5cB0k,4540
145
- notionary/page/page_content_writer.py,sha256=6WMDTbgjYRgJhmCrMnK4XokgVDhRWSRm55_1xceo0CA,6856
146
- notionary/page/page_context.py,sha256=fIeCF9gjpiAtRK0GZ-3CUZ5Ina8xIVCvmOnt4MtS3ek,1938
141
+ notionary/page/notion_page.py,sha256=6aQqAqiEg6gb5lISKkV6a2UzIixgOZ-7eivlvXpyHvc,23689
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
147
145
  notionary/page/property_formatter.py,sha256=_978ViH83gfcr-XtDscWTfyBI2srGW2hzC-gzgp5NR8,3788
148
146
  notionary/page/reader/handler/__init__.py,sha256=ROMH1KvGGdQ0ANLhmIP_4LtMks9jsTTwnZKP8W0uwls,644
149
147
  notionary/page/reader/handler/base_block_renderer.py,sha256=HZwv727bvu6suT1-uzK4y-4ci54VCdi0FF_yOJYBB1g,1513
150
148
  notionary/page/reader/handler/block_processing_context.py,sha256=eSNpjQ3tpOc7sJgEm-2UAwd1UvCf-B4CtHJLS5B0lZA,1001
151
149
  notionary/page/reader/handler/block_rendering_context.py,sha256=o3ASovI71jtffDeKVtx7hZqg7P6-qXvkWBft7ZqOa_s,1583
152
- notionary/page/reader/handler/column_list_renderer.py,sha256=rYh4lOmr74j-KE8VqddVbqVyXcZ4ZRg2ig_XNJAKmX8,2011
153
- notionary/page/reader/handler/column_renderer.py,sha256=XahgbvWCNqpdKpf0fs9E2yU9_sq7F4_ByUXE8Pi_Q_4,2312
150
+ notionary/page/reader/handler/column_list_renderer.py,sha256=dPp4q13s5Fkn6HAQ1oFZ6e6phepjnqz_fFuFHSMDJ9c,2023
151
+ notionary/page/reader/handler/column_renderer.py,sha256=JkpgS9IbiNkMQozBqfqn341ThmDF71FAv3Rq8ewAa2E,2324
154
152
  notionary/page/reader/handler/equation_renderer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
- notionary/page/reader/handler/line_renderer.py,sha256=TvgLZo1URsRQ4UEcaQtbAU4tGIuAX4uh3Kmemp9aRrA,2905
153
+ notionary/page/reader/handler/line_renderer.py,sha256=4Q4fHRvcWSjuDjTDVPn-My6PF8arfoAjzUqEb2MIg34,2917
156
154
  notionary/page/reader/handler/numbered_list_renderer.py,sha256=tFDfMYxFme1PuNBNi2kbIb13MGNLP5n2-NpLoEklR1E,3480
157
- notionary/page/reader/handler/toggle_renderer.py,sha256=D-kDJc1JbqM9BSGdgJxBsu1Fb8gpKU9ziNFqkS4_Tu8,2593
158
- notionary/page/reader/handler/toggleable_heading_renderer.py,sha256=vw336TY9K0v-JFu_x5xHlovCKylSITtMh2RM0YDt4lk,3374
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
159
157
  notionary/page/reader/page_content_retriever.py,sha256=ruzRISReupp5TbVwmVjURBk8wE35YYatNpDFpSpnEEQ,2854
160
158
  notionary/page/search_filter_builder.py,sha256=m8NbFUoxxCEBpcWZIxClyix8NNzeohsOw7D-Fddi-qA,4599
161
159
  notionary/page/utils.py,sha256=2nfBrWeczBdPH13R3q8dKP4OY4MwEdfKbcs2UJ9kg1o,2041
@@ -168,15 +166,15 @@ notionary/page/writer/handler/line_handler.py,sha256=miuU7MXJj1Ae_B_r4a84s9tJaJ8
168
166
  notionary/page/writer/handler/line_processing_context.py,sha256=F2GxDXIOgvZHxiDP-VDe8JUHGcsszMexPG0W9E9y39E,1739
169
167
  notionary/page/writer/handler/regular_line_handler.py,sha256=2T8xOi4ybcugMJL-sPyVvU0KRVQzFSPpvLibrixIJLA,3223
170
168
  notionary/page/writer/handler/table_handler.py,sha256=5r-Uh5Unc0iTbl3PXEDvE6qVCrp6YSprpOP9FRnaLY8,2581
171
- notionary/page/writer/handler/toggle_handler.py,sha256=3ZmaAxGh4PDqk9U0Gq4FhSWdmdU4-qgQRNvv_8vQf_Q,5823
172
- notionary/page/writer/handler/toggleable_heading_handler.py,sha256=ae0Cuzzdd5c-xKBFMYjzqRkj47wErgyFoBOZ9ytd0b4,6858
173
- notionary/page/writer/markdown_to_notion_converter.py,sha256=ENeP7I2ui532rx9hOULrJC6DHwcYELSkItY5epzBWi4,3272
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
174
172
  notionary/page/writer/markdown_to_notion_converter_context.py,sha256=Tys52QEGOzE_zDICI8W6pawCKSFGAjEqOyWTscUUysU,1033
175
- notionary/page/writer/markdown_to_notion_formatting_post_processor.py,sha256=E41t_TQYLbFTmOzREDrGOUy4gGiSu9pAP8No5Qpsi28,2368
176
- notionary/page/writer/markdown_to_notion_post_processor.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
173
  notionary/page/writer/markdown_to_notion_text_length_post_processor.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
174
  notionary/page/writer/notion_text_length_processor.py,sha256=WfXGouHs2KUFH1ASqloRkV6y7q2jS4vqbiEEMrmd7Qw,5744
179
- notionary/shared/__init__.py,sha256=7dKlDC1BpKy7LxceHTKVamLc9X0mc6stO5MOxBxidWY,87
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
180
178
  notionary/shared/name_to_id_resolver.py,sha256=SlxB2vmq1cMIZnL0o3U27wjYQSXeQkKURmKFy-BAqk4,6318
181
179
  notionary/telemetry/__init__.py,sha256=uzPrvkPIpbzPSHCu-tObCTmZA18l3VWqk42L8WLT-XM,511
182
180
  notionary/telemetry/service.py,sha256=FujT1ZuSHzTO0Rxa6oKlycE_Y-Qpe5lc59EGzzDf-jc,4725
@@ -198,7 +196,7 @@ notionary/util/page_id_utils.py,sha256=AA00kRO-g3Cc50tf_XW_tb5RBuPKLuBxRa0D8LYhL
198
196
  notionary/util/singleton.py,sha256=CKAvykndwPRZsA3n3MAY_XdCR59MBjjKP0vtm2BcvF0,428
199
197
  notionary/util/singleton_metaclass.py,sha256=DMvrh0IbAV8nIG1oX-2Yz57Uk1YHB647DNxoI3pAT3s,809
200
198
  notionary/workspace.py,sha256=QP4WcOIdQnlVr4M7hpGaFT-Fori_QRhsV-SBC2lnwTU,3809
201
- notionary-0.2.23.dist-info/LICENSE,sha256=zOm3cRT1qD49eg7vgw95MI79rpUAZa1kRBFwL2FkAr8,1120
202
- notionary-0.2.23.dist-info/METADATA,sha256=asanJv6EUiN6zgUVVplKEM7MUrafPfkGdxV4EQNGQ-Y,9035
203
- notionary-0.2.23.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
204
- notionary-0.2.23.dist-info/RECORD,,
199
+ notionary-0.2.24.dist-info/LICENSE,sha256=zOm3cRT1qD49eg7vgw95MI79rpUAZa1kRBFwL2FkAr8,1120
200
+ notionary-0.2.24.dist-info/METADATA,sha256=TAnB9piH5MJLjSJSgv3opZrGb7vVtqT8HFKrJr44ohM,9580
201
+ notionary-0.2.24.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
202
+ notionary-0.2.24.dist-info/RECORD,,
@@ -1,22 +0,0 @@
1
- from typing import Protocol
2
-
3
- from notionary.blocks.models import BlockCreateRequest
4
- from notionary.blocks.rich_text.rich_text_models import RichTextObject
5
-
6
-
7
- class HasRichText(Protocol):
8
- """Protocol for objects that have a rich_text attribute."""
9
-
10
- rich_text: list[RichTextObject]
11
-
12
-
13
- class HasChildren(Protocol):
14
- """Protocol for objects that have children blocks."""
15
-
16
- children: list[BlockCreateRequest]
17
-
18
-
19
- class HasRichTextAndChildren(HasRichText, HasChildren, Protocol):
20
- """Protocol for objects that have both rich_text and children."""
21
-
22
- pass