notionary 0.2.23__tar.gz → 0.2.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- notionary-0.2.25/PKG-INFO +270 -0
- notionary-0.2.25/README.md +246 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/__init__.py +1 -1
- notionary-0.2.25/notionary/blocks/__init__.py +5 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/audio/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/audio/audio_element.py +158 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/audio/audio_markdown_node.py +4 -17
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bookmark/__init__.py +0 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bookmark/bookmark_markdown_node.py +5 -21
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/breadcrumbs/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py +13 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bulleted_list/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/bulleted_list/bulleted_list_markdown_node.py +20 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bulleted_list/bulleted_list_models.py +0 -1
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/callout/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/callout/callout_markdown_node.py +19 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/callout/callout_models.py +3 -4
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/code/code_markdown_node.py +5 -19
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/__init__.py +0 -4
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/column_list_markdown_node.py +3 -19
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/column_markdown_node.py +4 -21
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/divider/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/divider/divider_markdown_node.py +11 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/embed/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/embed/embed_markdown_node.py +19 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/equation/__init__.py +0 -1
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/equation/equation_element_markdown_node.py +3 -15
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/file/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/file/file_element.py +133 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/file/file_element_markdown_node.py +4 -17
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/heading/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/heading/heading_markdown_node.py +16 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/heading/heading_models.py +3 -3
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/image_block/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/image_block/image_element.py +130 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/image_block/image_markdown_node.py +5 -20
- {notionary-0.2.23/notionary → notionary-0.2.25/notionary/blocks}/markdown/markdown_builder.py +29 -233
- notionary-0.2.25/notionary/blocks/markdown/markdown_node.py +25 -0
- notionary-0.2.25/notionary/blocks/mixins/file_upload/__init__.py +3 -0
- notionary-0.2.25/notionary/blocks/mixins/file_upload/file_upload_mixin.py +320 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/numbered_list/__init__.py +0 -1
- notionary-0.2.25/notionary/blocks/numbered_list/numbered_list_markdown_node.py +17 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/numbered_list/numbered_list_models.py +3 -3
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/paragraph/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/paragraph/paragraph_markdown_node.py +16 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/pdf/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/pdf/pdf_element.py +146 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/pdf/pdf_markdown_node.py +5 -18
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/quote/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/quote/quote_markdown_node.py +16 -0
- notionary-0.2.25/notionary/blocks/registry/__init__.py +3 -0
- notionary-0.2.25/notionary/blocks/registry/block_registry.py +150 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table/__init__.py +0 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table/table_markdown_node.py +17 -16
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table_of_contents/__init__.py +0 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table_of_contents/table_of_contents_element.py +27 -15
- notionary-0.2.25/notionary/blocks/table_of_contents/table_of_contents_markdown_node.py +21 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table_of_contents/table_of_contents_models.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/todo/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/todo/todo_markdown_node.py +21 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/todo/todo_models.py +2 -3
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggle/__init__.py +0 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggle/toggle_markdown_node.py +5 -19
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggleable_heading/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py +34 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/video/__init__.py +0 -2
- notionary-0.2.25/notionary/blocks/video/video_element.py +187 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/video/video_markdown_node.py +4 -15
- {notionary-0.2.23 → notionary-0.2.25}/notionary/comments/client.py +1 -1
- {notionary-0.2.23 → notionary-0.2.25}/notionary/file_upload/client.py +3 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/file_upload/models.py +10 -1
- {notionary-0.2.23 → notionary-0.2.25}/notionary/file_upload/notion_file_upload.py +5 -5
- notionary-0.2.25/notionary/page/markdown_whitespace_processor.py +129 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/notion_page.py +35 -40
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/page_content_deleting_service.py +1 -1
- notionary-0.2.25/notionary/page/page_content_writer.py +80 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/page_context.py +0 -5
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/column_list_renderer.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/column_renderer.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/line_renderer.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/toggle_renderer.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/toggleable_heading_renderer.py +2 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/equation_handler.py +1 -1
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/toggle_handler.py +8 -4
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/toggleable_heading_handler.py +3 -2
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/markdown_to_notion_converter.py +74 -30
- notionary-0.2.25/notionary/schemas/__init__.py +3 -0
- notionary-0.2.25/notionary/schemas/base.py +73 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/shared/__init__.py +1 -3
- {notionary-0.2.23 → notionary-0.2.25}/pyproject.toml +3 -1
- notionary-0.2.23/PKG-INFO +0 -235
- notionary-0.2.23/README.md +0 -212
- notionary-0.2.23/notionary/blocks/__init__.py +0 -3
- notionary-0.2.23/notionary/blocks/audio/audio_element.py +0 -115
- notionary-0.2.23/notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py +0 -32
- notionary-0.2.23/notionary/blocks/bulleted_list/bulleted_list_markdown_node.py +0 -34
- notionary-0.2.23/notionary/blocks/callout/callout_markdown_node.py +0 -33
- notionary-0.2.23/notionary/blocks/divider/divider_markdown_node.py +0 -25
- notionary-0.2.23/notionary/blocks/embed/embed_markdown_node.py +0 -32
- notionary-0.2.23/notionary/blocks/file/file_element.py +0 -112
- notionary-0.2.23/notionary/blocks/guards.py +0 -22
- notionary-0.2.23/notionary/blocks/heading/heading_markdown_node.py +0 -30
- notionary-0.2.23/notionary/blocks/image_block/image_element.py +0 -89
- notionary-0.2.23/notionary/blocks/numbered_list/numbered_list_markdown_node.py +0 -31
- notionary-0.2.23/notionary/blocks/paragraph/paragraph_markdown_node.py +0 -26
- notionary-0.2.23/notionary/blocks/pdf/pdf_element.py +0 -97
- notionary-0.2.23/notionary/blocks/quote/quote_markdown_node.py +0 -26
- notionary-0.2.23/notionary/blocks/registry/__init__.py +0 -4
- notionary-0.2.23/notionary/blocks/registry/block_registry.py +0 -95
- notionary-0.2.23/notionary/blocks/registry/block_registry_builder.py +0 -264
- notionary-0.2.23/notionary/blocks/table_of_contents/table_of_contents_markdown_node.py +0 -35
- notionary-0.2.23/notionary/blocks/todo/todo_markdown_node.py +0 -32
- notionary-0.2.23/notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py +0 -51
- notionary-0.2.23/notionary/blocks/video/video_element.py +0 -111
- notionary-0.2.23/notionary/markdown/makdown_document_model.py +0 -0
- notionary-0.2.23/notionary/markdown/markdown_document_model.py +0 -228
- notionary-0.2.23/notionary/markdown/markdown_node.py +0 -30
- notionary-0.2.23/notionary/models/notion_database_response.py +0 -0
- notionary-0.2.23/notionary/page/page_content_writer.py +0 -177
- notionary-0.2.23/notionary/page/writer/markdown_to_notion_formatting_post_processor.py +0 -73
- notionary-0.2.23/notionary/page/writer/markdown_to_notion_post_processor.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/LICENSE +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/base_notion_client.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/_bootstrap.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/audio/audio_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/base_block_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bookmark/bookmark_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bookmark/bookmark_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/breadcrumbs/breadcrumb_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/breadcrumbs/breadcrumb_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/bulleted_list/bulleted_list_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/callout/callout_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_database/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_database/child_database_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_database/child_database_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_page/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_page/child_page_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/child_page/child_page_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/client.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/code/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/code/code_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/code/code_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/column_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/column_list_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/column/column_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/divider/divider_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/divider/divider_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/embed/embed_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/embed/embed_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/equation/equation_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/equation/equation_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/file/file_element_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/heading/heading_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/image_block/image_models.py +0 -0
- /notionary-0.2.23/notionary/database/factory.py → /notionary-0.2.25/notionary/blocks/markdown/markdown_document_model.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/mixins/captions/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/mixins/captions/caption_markdown_node_mixin.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/mixins/captions/caption_mixin.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/numbered_list/numbered_list_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/paragraph/paragraph_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/paragraph/paragraph_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/pdf/pdf_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/quote/quote_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/quote/quote_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/rich_text/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/rich_text/rich_text_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/rich_text/text_inline_formatter.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/syntax_prompt_builder.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table/table_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/table/table_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/todo/todo_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggle/toggle_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggle/toggle_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/toggleable_heading/toggleable_heading_element.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/types.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/blocks/video/video_element_models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/comments/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/comments/models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/client.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/database.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/database_filter_builder.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/database_provider.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/exceptions.py +0 -0
- /notionary-0.2.23/notionary/markdown/___init__.py → /notionary-0.2.25/notionary/database/factory.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/database/notion_database.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/file_upload/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/client.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/property_formatter.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/base_block_renderer.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/block_processing_context.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/block_rendering_context.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/equation_renderer.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/handler/numbered_list_renderer.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/reader/page_content_retriever.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/search_filter_builder.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/utils.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/code_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/column_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/column_list_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/line_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/line_processing_context.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/regular_line_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/handler/table_handler.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/markdown_to_notion_converter_context.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/markdown_to_notion_text_length_post_processor.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/page/writer/notion_text_length_processor.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/shared/name_to_id_resolver.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/telemetry/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/telemetry/service.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/telemetry/views.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/base_notion_user.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/client.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/models.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/notion_bot_user.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/notion_user.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/user/notion_user_manager.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/__init__.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/concurrency_limiter.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/factory_decorator.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/factory_only.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/fuzzy.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/logging_mixin.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/page_id_utils.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/singleton.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/util/singleton_metaclass.py +0 -0
- {notionary-0.2.23 → notionary-0.2.25}/notionary/workspace.py +0 -0
@@ -0,0 +1,270 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: notionary
|
3
|
+
Version: 0.2.25
|
4
|
+
Summary: Python library for programmatic Notion workspace management - databases, pages, and content with advanced Markdown support
|
5
|
+
License: MIT
|
6
|
+
Author: Mathis Arends
|
7
|
+
Author-email: mathisarends27@gmail.com
|
8
|
+
Requires-Python: >=3.9
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
16
|
+
Requires-Dist: aiofiles (>=24.1.0,<25.0.0)
|
17
|
+
Requires-Dist: httpx (>=0.28.0)
|
18
|
+
Requires-Dist: posthog (>=6.3.1,<7.0.0)
|
19
|
+
Requires-Dist: pydantic (>=2.11.4)
|
20
|
+
Requires-Dist: python-dotenv (>=1.1.0)
|
21
|
+
Project-URL: Homepage, https://github.com/mathisarends/notionary
|
22
|
+
Description-Content-Type: text/markdown
|
23
|
+
|
24
|
+
<picture>
|
25
|
+
<source media="(prefers-color-scheme: dark)" srcset="./static/notionary-dark.png">
|
26
|
+
<source media="(prefers-color-scheme: light)" srcset="./static/notionary-light.png">
|
27
|
+
<img alt="Notionary logo: dark mode shows a white logo, light mode shows a black logo." src="./static/browser-use.png" width="full">
|
28
|
+
</picture>
|
29
|
+
|
30
|
+
<h1 align="center">The Modern Notion API for Python & AI Agents</h1>
|
31
|
+
|
32
|
+
<div align="center">
|
33
|
+
|
34
|
+
[](https://www.python.org/downloads/)
|
35
|
+
[](LICENSE)
|
36
|
+
[](https://mathisarends.github.io/notionary/)
|
37
|
+
|
38
|
+
**Transform complex Notion API interactions into simple, Pythonic code.**
|
39
|
+
Perfect for developers building AI agents, automation workflows, and dynamic content systems.
|
40
|
+
|
41
|
+
</div>
|
42
|
+
|
43
|
+
---
|
44
|
+
|
45
|
+
## Why Notionary?
|
46
|
+
|
47
|
+
- **AI-Native Design** - Built specifically for AI agents with schema-driven markdown syntax
|
48
|
+
- **Smart Discovery** - Find pages and databases by name with fuzzy matching—no more hunting for IDs
|
49
|
+
- **Extended Markdown** - Rich syntax for toggles, columns, callouts, and media uploads
|
50
|
+
- **Async-First** - Modern Python with full async/await support and high performance
|
51
|
+
- **Round-Trip** - Read existing content, modify it, and write it back while preserving formatting
|
52
|
+
- **Complete Coverage** - Every Notion block type supported with type safety
|
53
|
+
|
54
|
+
---
|
55
|
+
|
56
|
+
## Installation
|
57
|
+
|
58
|
+
```bash
|
59
|
+
pip install notionary
|
60
|
+
```
|
61
|
+
|
62
|
+
Set up your [Notion integration](https://www.notion.so/profile/integrations) and configure your token:
|
63
|
+
|
64
|
+
```bash
|
65
|
+
export NOTION_SECRET=your_integration_key
|
66
|
+
```
|
67
|
+
|
68
|
+
---
|
69
|
+
|
70
|
+
## See It in Action
|
71
|
+
|
72
|
+
### Creating Rich Database Entries
|
73
|
+
|
74
|
+
https://github.com/user-attachments/assets/da8b4691-bee4-4b0f-801e-dccacb630398
|
75
|
+
|
76
|
+
*Create styled project pages with properties, content, and rich formatting*
|
77
|
+
|
78
|
+
### Local File Uploads (Videos & Images)
|
79
|
+
|
80
|
+
https://github.com/user-attachments/assets/a079ec01-bb56-4c65-8260-7b1fca42ac68
|
81
|
+
|
82
|
+
*Upload videos and images using simple markdown syntax - files are automatically uploaded to Notion*
|
83
|
+
|
84
|
+
---
|
85
|
+
|
86
|
+
## Quick Start
|
87
|
+
|
88
|
+
### Find → Create → Update Flow
|
89
|
+
|
90
|
+
```python
|
91
|
+
import asyncio
|
92
|
+
from notionary import NotionPage, NotionDatabase
|
93
|
+
|
94
|
+
async def main():
|
95
|
+
# Find pages by name - fuzzy matching included!
|
96
|
+
page = await NotionPage.from_page_name("Meeting Notes")
|
97
|
+
|
98
|
+
# Option 1: Direct Extended Markdown
|
99
|
+
await page.append_markdown("""
|
100
|
+
## Action Items
|
101
|
+
- [x] Review project proposal
|
102
|
+
- [ ] Schedule team meeting
|
103
|
+
- [ ] Update documentation
|
104
|
+
|
105
|
+
[callout](Meeting decisions require follow-up "💡")
|
106
|
+
|
107
|
+
+++ Details
|
108
|
+
Additional context and next steps...
|
109
|
+
+++
|
110
|
+
""")
|
111
|
+
|
112
|
+
# Option 2: Type-Safe Builder (maps to same markdown internally)
|
113
|
+
await page.append_markdown(lambda builder: (
|
114
|
+
builder
|
115
|
+
.h2("Project Status")
|
116
|
+
.callout("Milestone reached!", "🎉")
|
117
|
+
.columns(
|
118
|
+
lambda col: col.h3("Completed").bulleted_list([
|
119
|
+
"API design", "Database setup", "Authentication"
|
120
|
+
]),
|
121
|
+
lambda col: col.h3("In Progress").bulleted_list([
|
122
|
+
"Frontend UI", "Testing", "Documentation"
|
123
|
+
]),
|
124
|
+
width_ratios=[0.6, 0.4]
|
125
|
+
)
|
126
|
+
.toggle("Budget Details", lambda t: t
|
127
|
+
.table(["Item", "Cost", "Status"], [
|
128
|
+
["Development", "$15,000", "Paid"],
|
129
|
+
["Design", "$8,000", "Pending"]
|
130
|
+
])
|
131
|
+
)
|
132
|
+
))
|
133
|
+
|
134
|
+
asyncio.run(main())
|
135
|
+
```
|
136
|
+
|
137
|
+
### Complete Block Support
|
138
|
+
|
139
|
+
Every Notion block type with extended syntax:
|
140
|
+
|
141
|
+
| Block Type | Markdown Syntax | Use Case |
|
142
|
+
|------------|-----------------|----------|
|
143
|
+
| **Callouts** | `[callout](Text "🔥")` | Highlighting key information |
|
144
|
+
| **Toggles** | `+++ Title\nContent\n+++` | Collapsible sections |
|
145
|
+
| **Columns** | `::: columns\n::: column\nContent\n:::\n:::` | Side-by-side layouts |
|
146
|
+
| **Tables** | Standard markdown tables | Structured data |
|
147
|
+
| **Media** | `[video](./file.mp4)(caption:Description)` | Auto-uploading files |
|
148
|
+
| **Code** | Standard code fences with captions | Code snippets |
|
149
|
+
| **Equations** | `$LaTeX$` | Mathematical expressions |
|
150
|
+
| **TOC** | `[toc](blue_background)` | Auto-generated navigation |
|
151
|
+
|
152
|
+
---
|
153
|
+
|
154
|
+
## What You Can Build 💡
|
155
|
+
|
156
|
+
### **AI Content Systems**
|
157
|
+
- **Report Generation**: AI agents that create structured reports, documentation, and analysis
|
158
|
+
- **Content Pipelines**: Automated workflows that process data and generate Notion pages
|
159
|
+
- **Knowledge Management**: AI-powered documentation systems with smart categorization
|
160
|
+
|
161
|
+
### **Workflow Automation**
|
162
|
+
- **Project Management**: Sync project status, update timelines, generate progress reports
|
163
|
+
- **Data Integration**: Connect external APIs and databases to Notion workspaces
|
164
|
+
- **Template Systems**: Dynamic page generation from templates and data sources
|
165
|
+
|
166
|
+
### **Content Management**
|
167
|
+
- **Bulk Operations**: Mass page updates, content migration, and database management
|
168
|
+
- **Media Handling**: Automated image/video uploads with proper organization
|
169
|
+
- **Cross-Platform**: Sync content between Notion and other platforms
|
170
|
+
|
171
|
+
---
|
172
|
+
|
173
|
+
## Key Features
|
174
|
+
|
175
|
+
<table>
|
176
|
+
<tr>
|
177
|
+
<td width="50%">
|
178
|
+
|
179
|
+
### Smart Discovery
|
180
|
+
- Find pages/databases by name
|
181
|
+
- Fuzzy matching for approximate searches
|
182
|
+
- No more hunting for IDs or URLs
|
183
|
+
|
184
|
+
### Extended Markdown
|
185
|
+
- Rich syntax beyond standard markdown
|
186
|
+
- Callouts, toggles, columns, media uploads
|
187
|
+
- Schema provided for AI agent integration
|
188
|
+
|
189
|
+
### Modern Python
|
190
|
+
- Full async/await support
|
191
|
+
- Type hints throughout
|
192
|
+
- High-performance batch operations
|
193
|
+
|
194
|
+
</td>
|
195
|
+
<td width="50%">
|
196
|
+
|
197
|
+
### Round-Trip Editing
|
198
|
+
- Read existing content as markdown
|
199
|
+
- Edit and modify preserving formatting
|
200
|
+
- Write back to Notion seamlessly
|
201
|
+
|
202
|
+
### AI-Ready Architecture
|
203
|
+
- Schema-driven syntax for LLM prompts
|
204
|
+
- Perfect for AI content generation
|
205
|
+
- Handles complex nested structures
|
206
|
+
|
207
|
+
### Complete Coverage
|
208
|
+
- Every Notion block type supported
|
209
|
+
- File uploads with automatic handling
|
210
|
+
- Database operations and properties
|
211
|
+
|
212
|
+
</td>
|
213
|
+
</tr>
|
214
|
+
</table>
|
215
|
+
|
216
|
+
---
|
217
|
+
|
218
|
+
## Examples & Documentation
|
219
|
+
|
220
|
+
### Full Documentation
|
221
|
+
[**mathisarends.github.io/notionary**](https://mathisarends.github.io/notionary/) - Complete API reference, guides, and tutorials
|
222
|
+
|
223
|
+
### Quick Links
|
224
|
+
- [**Getting Started**](https://mathisarends.github.io/notionary/get-started/) - Setup and first steps
|
225
|
+
- [**Page Management**](https://mathisarends.github.io/notionary/page/) - Content and properties
|
226
|
+
- [**Database Operations**](https://mathisarends.github.io/notionary/database/) - Queries and management
|
227
|
+
- [**Block Types Reference**](https://mathisarends.github.io/notionary/blocks/) - Complete syntax guide
|
228
|
+
|
229
|
+
### Hands-On Examples
|
230
|
+
|
231
|
+
**Core Functionality:**
|
232
|
+
- [Page Management](examples/page_example.py) - Create, update, and manage pages
|
233
|
+
- [Database Operations](examples/database.py) - Connect and query databases
|
234
|
+
- [Workspace Discovery](examples/workspace_discovery.py) - Explore your workspace
|
235
|
+
|
236
|
+
**Extended Markdown:**
|
237
|
+
- [Basic Formatting](examples/markdown/basic.py) - Text, lists, and links
|
238
|
+
- [Callouts & Highlights](examples/markdown/callout.py) - Information boxes
|
239
|
+
- [Toggle Sections](examples/markdown/toggle.py) - Collapsible content
|
240
|
+
- [Multi-Column Layouts](examples/markdown/columns.py) - Side-by-side design
|
241
|
+
- [Tables & Data](examples/markdown/table.py) - Structured presentations
|
242
|
+
|
243
|
+
---
|
244
|
+
|
245
|
+
## Contributing
|
246
|
+
|
247
|
+
We welcome contributions from the community! Whether you're:
|
248
|
+
- **Fixing bugs** - Help improve stability and reliability
|
249
|
+
- **Adding features** - Extend functionality for new use cases
|
250
|
+
- **Improving docs** - Make the library more accessible
|
251
|
+
- **Sharing examples** - Show creative applications and patterns
|
252
|
+
|
253
|
+
Check our [**Contributing Guide**](https://mathisarends.github.io/notionary/contributing/) to get started.
|
254
|
+
|
255
|
+
---
|
256
|
+
|
257
|
+
<div align="center">
|
258
|
+
|
259
|
+
**Ready to revolutionize your Notion workflows?**
|
260
|
+
|
261
|
+
[📖 **Read the Docs**](https://mathisarends.github.io/notionary/) • [🚀 **Getting Started**](https://mathisarends.github.io/notionary/get-started/) • [💻 **Browse Examples**](examples/)
|
262
|
+
|
263
|
+
*Built with ❤️ for Python developers and AI agents*
|
264
|
+
|
265
|
+
---
|
266
|
+
|
267
|
+
**Transform complex Notion API interactions into simple, powerful code.**
|
268
|
+
|
269
|
+
</div>
|
270
|
+
|
@@ -0,0 +1,246 @@
|
|
1
|
+
<picture>
|
2
|
+
<source media="(prefers-color-scheme: dark)" srcset="./static/notionary-dark.png">
|
3
|
+
<source media="(prefers-color-scheme: light)" srcset="./static/notionary-light.png">
|
4
|
+
<img alt="Notionary logo: dark mode shows a white logo, light mode shows a black logo." src="./static/browser-use.png" width="full">
|
5
|
+
</picture>
|
6
|
+
|
7
|
+
<h1 align="center">The Modern Notion API for Python & AI Agents</h1>
|
8
|
+
|
9
|
+
<div align="center">
|
10
|
+
|
11
|
+
[](https://www.python.org/downloads/)
|
12
|
+
[](LICENSE)
|
13
|
+
[](https://mathisarends.github.io/notionary/)
|
14
|
+
|
15
|
+
**Transform complex Notion API interactions into simple, Pythonic code.**
|
16
|
+
Perfect for developers building AI agents, automation workflows, and dynamic content systems.
|
17
|
+
|
18
|
+
</div>
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
## Why Notionary?
|
23
|
+
|
24
|
+
- **AI-Native Design** - Built specifically for AI agents with schema-driven markdown syntax
|
25
|
+
- **Smart Discovery** - Find pages and databases by name with fuzzy matching—no more hunting for IDs
|
26
|
+
- **Extended Markdown** - Rich syntax for toggles, columns, callouts, and media uploads
|
27
|
+
- **Async-First** - Modern Python with full async/await support and high performance
|
28
|
+
- **Round-Trip** - Read existing content, modify it, and write it back while preserving formatting
|
29
|
+
- **Complete Coverage** - Every Notion block type supported with type safety
|
30
|
+
|
31
|
+
---
|
32
|
+
|
33
|
+
## Installation
|
34
|
+
|
35
|
+
```bash
|
36
|
+
pip install notionary
|
37
|
+
```
|
38
|
+
|
39
|
+
Set up your [Notion integration](https://www.notion.so/profile/integrations) and configure your token:
|
40
|
+
|
41
|
+
```bash
|
42
|
+
export NOTION_SECRET=your_integration_key
|
43
|
+
```
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
## See It in Action
|
48
|
+
|
49
|
+
### Creating Rich Database Entries
|
50
|
+
|
51
|
+
https://github.com/user-attachments/assets/da8b4691-bee4-4b0f-801e-dccacb630398
|
52
|
+
|
53
|
+
*Create styled project pages with properties, content, and rich formatting*
|
54
|
+
|
55
|
+
### Local File Uploads (Videos & Images)
|
56
|
+
|
57
|
+
https://github.com/user-attachments/assets/a079ec01-bb56-4c65-8260-7b1fca42ac68
|
58
|
+
|
59
|
+
*Upload videos and images using simple markdown syntax - files are automatically uploaded to Notion*
|
60
|
+
|
61
|
+
---
|
62
|
+
|
63
|
+
## Quick Start
|
64
|
+
|
65
|
+
### Find → Create → Update Flow
|
66
|
+
|
67
|
+
```python
|
68
|
+
import asyncio
|
69
|
+
from notionary import NotionPage, NotionDatabase
|
70
|
+
|
71
|
+
async def main():
|
72
|
+
# Find pages by name - fuzzy matching included!
|
73
|
+
page = await NotionPage.from_page_name("Meeting Notes")
|
74
|
+
|
75
|
+
# Option 1: Direct Extended Markdown
|
76
|
+
await page.append_markdown("""
|
77
|
+
## Action Items
|
78
|
+
- [x] Review project proposal
|
79
|
+
- [ ] Schedule team meeting
|
80
|
+
- [ ] Update documentation
|
81
|
+
|
82
|
+
[callout](Meeting decisions require follow-up "💡")
|
83
|
+
|
84
|
+
+++ Details
|
85
|
+
Additional context and next steps...
|
86
|
+
+++
|
87
|
+
""")
|
88
|
+
|
89
|
+
# Option 2: Type-Safe Builder (maps to same markdown internally)
|
90
|
+
await page.append_markdown(lambda builder: (
|
91
|
+
builder
|
92
|
+
.h2("Project Status")
|
93
|
+
.callout("Milestone reached!", "🎉")
|
94
|
+
.columns(
|
95
|
+
lambda col: col.h3("Completed").bulleted_list([
|
96
|
+
"API design", "Database setup", "Authentication"
|
97
|
+
]),
|
98
|
+
lambda col: col.h3("In Progress").bulleted_list([
|
99
|
+
"Frontend UI", "Testing", "Documentation"
|
100
|
+
]),
|
101
|
+
width_ratios=[0.6, 0.4]
|
102
|
+
)
|
103
|
+
.toggle("Budget Details", lambda t: t
|
104
|
+
.table(["Item", "Cost", "Status"], [
|
105
|
+
["Development", "$15,000", "Paid"],
|
106
|
+
["Design", "$8,000", "Pending"]
|
107
|
+
])
|
108
|
+
)
|
109
|
+
))
|
110
|
+
|
111
|
+
asyncio.run(main())
|
112
|
+
```
|
113
|
+
|
114
|
+
### Complete Block Support
|
115
|
+
|
116
|
+
Every Notion block type with extended syntax:
|
117
|
+
|
118
|
+
| Block Type | Markdown Syntax | Use Case |
|
119
|
+
|------------|-----------------|----------|
|
120
|
+
| **Callouts** | `[callout](Text "🔥")` | Highlighting key information |
|
121
|
+
| **Toggles** | `+++ Title\nContent\n+++` | Collapsible sections |
|
122
|
+
| **Columns** | `::: columns\n::: column\nContent\n:::\n:::` | Side-by-side layouts |
|
123
|
+
| **Tables** | Standard markdown tables | Structured data |
|
124
|
+
| **Media** | `[video](./file.mp4)(caption:Description)` | Auto-uploading files |
|
125
|
+
| **Code** | Standard code fences with captions | Code snippets |
|
126
|
+
| **Equations** | `$LaTeX$` | Mathematical expressions |
|
127
|
+
| **TOC** | `[toc](blue_background)` | Auto-generated navigation |
|
128
|
+
|
129
|
+
---
|
130
|
+
|
131
|
+
## What You Can Build 💡
|
132
|
+
|
133
|
+
### **AI Content Systems**
|
134
|
+
- **Report Generation**: AI agents that create structured reports, documentation, and analysis
|
135
|
+
- **Content Pipelines**: Automated workflows that process data and generate Notion pages
|
136
|
+
- **Knowledge Management**: AI-powered documentation systems with smart categorization
|
137
|
+
|
138
|
+
### **Workflow Automation**
|
139
|
+
- **Project Management**: Sync project status, update timelines, generate progress reports
|
140
|
+
- **Data Integration**: Connect external APIs and databases to Notion workspaces
|
141
|
+
- **Template Systems**: Dynamic page generation from templates and data sources
|
142
|
+
|
143
|
+
### **Content Management**
|
144
|
+
- **Bulk Operations**: Mass page updates, content migration, and database management
|
145
|
+
- **Media Handling**: Automated image/video uploads with proper organization
|
146
|
+
- **Cross-Platform**: Sync content between Notion and other platforms
|
147
|
+
|
148
|
+
---
|
149
|
+
|
150
|
+
## Key Features
|
151
|
+
|
152
|
+
<table>
|
153
|
+
<tr>
|
154
|
+
<td width="50%">
|
155
|
+
|
156
|
+
### Smart Discovery
|
157
|
+
- Find pages/databases by name
|
158
|
+
- Fuzzy matching for approximate searches
|
159
|
+
- No more hunting for IDs or URLs
|
160
|
+
|
161
|
+
### Extended Markdown
|
162
|
+
- Rich syntax beyond standard markdown
|
163
|
+
- Callouts, toggles, columns, media uploads
|
164
|
+
- Schema provided for AI agent integration
|
165
|
+
|
166
|
+
### Modern Python
|
167
|
+
- Full async/await support
|
168
|
+
- Type hints throughout
|
169
|
+
- High-performance batch operations
|
170
|
+
|
171
|
+
</td>
|
172
|
+
<td width="50%">
|
173
|
+
|
174
|
+
### Round-Trip Editing
|
175
|
+
- Read existing content as markdown
|
176
|
+
- Edit and modify preserving formatting
|
177
|
+
- Write back to Notion seamlessly
|
178
|
+
|
179
|
+
### AI-Ready Architecture
|
180
|
+
- Schema-driven syntax for LLM prompts
|
181
|
+
- Perfect for AI content generation
|
182
|
+
- Handles complex nested structures
|
183
|
+
|
184
|
+
### Complete Coverage
|
185
|
+
- Every Notion block type supported
|
186
|
+
- File uploads with automatic handling
|
187
|
+
- Database operations and properties
|
188
|
+
|
189
|
+
</td>
|
190
|
+
</tr>
|
191
|
+
</table>
|
192
|
+
|
193
|
+
---
|
194
|
+
|
195
|
+
## Examples & Documentation
|
196
|
+
|
197
|
+
### Full Documentation
|
198
|
+
[**mathisarends.github.io/notionary**](https://mathisarends.github.io/notionary/) - Complete API reference, guides, and tutorials
|
199
|
+
|
200
|
+
### Quick Links
|
201
|
+
- [**Getting Started**](https://mathisarends.github.io/notionary/get-started/) - Setup and first steps
|
202
|
+
- [**Page Management**](https://mathisarends.github.io/notionary/page/) - Content and properties
|
203
|
+
- [**Database Operations**](https://mathisarends.github.io/notionary/database/) - Queries and management
|
204
|
+
- [**Block Types Reference**](https://mathisarends.github.io/notionary/blocks/) - Complete syntax guide
|
205
|
+
|
206
|
+
### Hands-On Examples
|
207
|
+
|
208
|
+
**Core Functionality:**
|
209
|
+
- [Page Management](examples/page_example.py) - Create, update, and manage pages
|
210
|
+
- [Database Operations](examples/database.py) - Connect and query databases
|
211
|
+
- [Workspace Discovery](examples/workspace_discovery.py) - Explore your workspace
|
212
|
+
|
213
|
+
**Extended Markdown:**
|
214
|
+
- [Basic Formatting](examples/markdown/basic.py) - Text, lists, and links
|
215
|
+
- [Callouts & Highlights](examples/markdown/callout.py) - Information boxes
|
216
|
+
- [Toggle Sections](examples/markdown/toggle.py) - Collapsible content
|
217
|
+
- [Multi-Column Layouts](examples/markdown/columns.py) - Side-by-side design
|
218
|
+
- [Tables & Data](examples/markdown/table.py) - Structured presentations
|
219
|
+
|
220
|
+
---
|
221
|
+
|
222
|
+
## Contributing
|
223
|
+
|
224
|
+
We welcome contributions from the community! Whether you're:
|
225
|
+
- **Fixing bugs** - Help improve stability and reliability
|
226
|
+
- **Adding features** - Extend functionality for new use cases
|
227
|
+
- **Improving docs** - Make the library more accessible
|
228
|
+
- **Sharing examples** - Show creative applications and patterns
|
229
|
+
|
230
|
+
Check our [**Contributing Guide**](https://mathisarends.github.io/notionary/contributing/) to get started.
|
231
|
+
|
232
|
+
---
|
233
|
+
|
234
|
+
<div align="center">
|
235
|
+
|
236
|
+
**Ready to revolutionize your Notion workflows?**
|
237
|
+
|
238
|
+
[📖 **Read the Docs**](https://mathisarends.github.io/notionary/) • [🚀 **Getting Started**](https://mathisarends.github.io/notionary/get-started/) • [💻 **Browse Examples**](examples/)
|
239
|
+
|
240
|
+
*Built with ❤️ for Python developers and AI agents*
|
241
|
+
|
242
|
+
---
|
243
|
+
|
244
|
+
**Transform complex Notion API interactions into simple, powerful code.**
|
245
|
+
|
246
|
+
</div>
|
@@ -4,7 +4,7 @@ bootstrap_blocks()
|
|
4
4
|
|
5
5
|
from .database import DatabaseFilterBuilder, NotionDatabase
|
6
6
|
from .file_upload import NotionFileUpload
|
7
|
-
from .markdown.markdown_builder import MarkdownBuilder
|
7
|
+
from .blocks.markdown.markdown_builder import MarkdownBuilder
|
8
8
|
from .page.notion_page import NotionPage
|
9
9
|
from .user import NotionBotUser, NotionUser, NotionUserManager
|
10
10
|
from .workspace import NotionWorkspace
|
@@ -1,6 +1,5 @@
|
|
1
1
|
from notionary.blocks.audio.audio_element import AudioElement
|
2
2
|
from notionary.blocks.audio.audio_markdown_node import (
|
3
|
-
AudioMarkdownBlockParams,
|
4
3
|
AudioMarkdownNode,
|
5
4
|
)
|
6
5
|
from notionary.blocks.audio.audio_models import CreateAudioBlock
|
@@ -9,5 +8,4 @@ __all__ = [
|
|
9
8
|
"AudioElement",
|
10
9
|
"CreateAudioBlock",
|
11
10
|
"AudioMarkdownNode",
|
12
|
-
"AudioMarkdownBlockParams",
|
13
11
|
]
|