notionary 0.2.26__py3-none-any.whl → 0.2.28__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- notionary/__init__.py +5 -20
- notionary/blocks/client.py +87 -215
- notionary/blocks/enums.py +167 -0
- notionary/blocks/rich_text/markdown_rich_text_converter.py +266 -0
- notionary/blocks/rich_text/models.py +164 -0
- notionary/blocks/rich_text/name_id_resolver/__init__.py +11 -0
- notionary/blocks/rich_text/name_id_resolver/database.py +31 -0
- notionary/blocks/rich_text/name_id_resolver/page.py +34 -0
- notionary/blocks/rich_text/name_id_resolver/person.py +37 -0
- notionary/blocks/rich_text/name_id_resolver/port.py +11 -0
- notionary/blocks/rich_text/rich_text_markdown_converter.py +132 -0
- notionary/blocks/rich_text/rich_text_patterns.py +39 -0
- notionary/blocks/schemas.py +746 -0
- notionary/comments/client.py +52 -187
- notionary/comments/factory.py +40 -0
- notionary/comments/models.py +5 -127
- notionary/comments/schemas.py +240 -0
- notionary/comments/service.py +34 -0
- notionary/data_source/http/client.py +11 -0
- notionary/data_source/http/data_source_instance_client.py +94 -0
- notionary/data_source/properties/models.py +406 -0
- notionary/data_source/query/builder.py +429 -0
- notionary/data_source/query/resolver.py +114 -0
- notionary/data_source/query/schema.py +304 -0
- notionary/data_source/query/validator.py +73 -0
- notionary/data_source/schemas.py +27 -0
- notionary/data_source/service.py +353 -0
- notionary/database/client.py +30 -135
- notionary/database/database_metadata_update_client.py +19 -0
- notionary/database/schemas.py +29 -0
- notionary/database/service.py +169 -0
- notionary/exceptions/__init__.py +33 -0
- notionary/exceptions/api.py +41 -0
- notionary/exceptions/base.py +2 -0
- notionary/exceptions/block_parsing.py +16 -0
- notionary/exceptions/data_source/__init__.py +6 -0
- notionary/exceptions/data_source/builder.py +182 -0
- notionary/exceptions/data_source/properties.py +34 -0
- notionary/exceptions/properties.py +58 -0
- notionary/exceptions/search.py +33 -0
- notionary/file_upload/client.py +18 -30
- notionary/file_upload/models.py +7 -8
- notionary/file_upload/{notion_file_upload.py → service.py} +29 -64
- notionary/http/client.py +205 -0
- notionary/http/models.py +49 -0
- notionary/page/blocks/client.py +1 -0
- notionary/page/content/factory.py +68 -0
- notionary/page/content/markdown/__init__.py +5 -0
- notionary/page/content/markdown/builder.py +304 -0
- notionary/page/content/markdown/nodes/__init__.py +54 -0
- notionary/page/content/markdown/nodes/audio.py +23 -0
- notionary/page/content/markdown/nodes/base.py +12 -0
- notionary/page/content/markdown/nodes/bookmark.py +25 -0
- notionary/page/content/markdown/nodes/breadcrumb.py +14 -0
- notionary/page/content/markdown/nodes/bulleted_list.py +18 -0
- notionary/page/content/markdown/nodes/callout.py +32 -0
- notionary/page/content/markdown/nodes/code.py +30 -0
- notionary/page/content/markdown/nodes/columns.py +51 -0
- notionary/page/content/markdown/nodes/divider.py +14 -0
- notionary/page/content/markdown/nodes/embed.py +23 -0
- notionary/page/content/markdown/nodes/equation.py +19 -0
- notionary/page/content/markdown/nodes/file.py +23 -0
- notionary/page/content/markdown/nodes/heading.py +16 -0
- notionary/page/content/markdown/nodes/image.py +23 -0
- notionary/page/content/markdown/nodes/mixins/caption.py +12 -0
- notionary/page/content/markdown/nodes/numbered_list.py +15 -0
- notionary/page/content/markdown/nodes/paragraph.py +14 -0
- notionary/page/content/markdown/nodes/pdf.py +23 -0
- notionary/page/content/markdown/nodes/quote.py +15 -0
- notionary/page/content/markdown/nodes/space.py +14 -0
- notionary/page/content/markdown/nodes/table.py +45 -0
- notionary/page/content/markdown/nodes/table_of_contents.py +14 -0
- notionary/page/content/markdown/nodes/todo.py +22 -0
- notionary/page/content/markdown/nodes/toggle.py +28 -0
- notionary/page/content/markdown/nodes/toggleable_heading.py +35 -0
- notionary/page/content/markdown/nodes/video.py +23 -0
- notionary/page/content/parser/context.py +49 -0
- notionary/page/content/parser/factory.py +219 -0
- notionary/page/content/parser/parsers/__init__.py +60 -0
- notionary/page/content/parser/parsers/audio.py +40 -0
- notionary/page/content/parser/parsers/base.py +30 -0
- notionary/page/content/parser/parsers/bookmark.py +33 -0
- notionary/page/content/parser/parsers/breadcrumb.py +33 -0
- notionary/page/content/parser/parsers/bulleted_list.py +41 -0
- notionary/page/content/parser/parsers/callout.py +129 -0
- notionary/page/content/parser/parsers/caption.py +55 -0
- notionary/page/content/parser/parsers/code.py +81 -0
- notionary/page/content/parser/parsers/column.py +117 -0
- notionary/page/content/parser/parsers/column_list.py +81 -0
- notionary/page/content/parser/parsers/divider.py +33 -0
- notionary/page/content/parser/parsers/embed.py +33 -0
- notionary/page/content/parser/parsers/equation.py +65 -0
- notionary/page/content/parser/parsers/file.py +42 -0
- notionary/page/content/parser/parsers/heading.py +58 -0
- notionary/page/content/parser/parsers/image.py +42 -0
- notionary/page/content/parser/parsers/numbered_list.py +45 -0
- notionary/page/content/parser/parsers/paragraph.py +36 -0
- notionary/page/content/parser/parsers/pdf.py +42 -0
- notionary/page/content/parser/parsers/quote.py +65 -0
- notionary/page/content/parser/parsers/space.py +35 -0
- notionary/page/content/parser/parsers/table.py +144 -0
- notionary/page/content/parser/parsers/table_of_contents.py +32 -0
- notionary/page/content/parser/parsers/todo.py +58 -0
- notionary/page/content/parser/parsers/toggle.py +127 -0
- notionary/page/content/parser/parsers/toggleable_heading.py +150 -0
- notionary/page/content/parser/parsers/video.py +42 -0
- notionary/page/content/parser/post_processing/handlers/__init__.py +5 -0
- notionary/page/content/parser/post_processing/handlers/rich_text_length.py +93 -0
- notionary/page/content/parser/post_processing/handlers/rich_text_length_truncation.py +93 -0
- notionary/page/content/parser/post_processing/port.py +9 -0
- notionary/page/content/parser/post_processing/service.py +16 -0
- notionary/page/content/parser/pre_processsing/handlers/__init__.py +9 -0
- notionary/page/content/parser/pre_processsing/handlers/column_syntax.py +80 -0
- notionary/page/content/parser/pre_processsing/handlers/port.py +7 -0
- notionary/page/content/parser/pre_processsing/handlers/whitespace.py +68 -0
- notionary/page/content/parser/pre_processsing/service.py +15 -0
- notionary/page/content/parser/service.py +69 -0
- notionary/page/content/renderer/context.py +48 -0
- notionary/page/content/renderer/factory.py +240 -0
- notionary/page/content/renderer/post_processing/handlers/__init__.py +5 -0
- notionary/page/content/renderer/post_processing/handlers/numbered_list_placeholdere.py +62 -0
- notionary/page/content/renderer/post_processing/port.py +7 -0
- notionary/page/content/renderer/post_processing/service.py +15 -0
- notionary/page/content/renderer/renderers/__init__.py +57 -0
- notionary/page/content/renderer/renderers/audio.py +31 -0
- notionary/page/content/renderer/renderers/base.py +31 -0
- notionary/page/content/renderer/renderers/bookmark.py +25 -0
- notionary/page/content/renderer/renderers/breadcrumb.py +21 -0
- notionary/page/content/renderer/renderers/bulleted_list.py +48 -0
- notionary/page/content/renderer/renderers/callout.py +65 -0
- notionary/page/content/renderer/renderers/captioned_block.py +58 -0
- notionary/page/content/renderer/renderers/code.py +34 -0
- notionary/page/content/renderer/renderers/column.py +44 -0
- notionary/page/content/renderer/renderers/column_list.py +31 -0
- notionary/page/content/renderer/renderers/divider.py +22 -0
- notionary/page/content/renderer/renderers/embed.py +25 -0
- notionary/page/content/renderer/renderers/equation.py +37 -0
- notionary/page/content/renderer/renderers/fallback.py +24 -0
- notionary/page/content/renderer/renderers/file.py +40 -0
- notionary/page/content/renderer/renderers/heading.py +69 -0
- notionary/page/content/renderer/renderers/image.py +31 -0
- notionary/page/content/renderer/renderers/numbered_list.py +41 -0
- notionary/page/content/renderer/renderers/paragraph.py +40 -0
- notionary/page/content/renderer/renderers/pdf.py +31 -0
- notionary/page/content/renderer/renderers/quote.py +49 -0
- notionary/page/content/renderer/renderers/table.py +115 -0
- notionary/page/content/renderer/renderers/table_of_contents.py +26 -0
- notionary/page/content/renderer/renderers/table_row.py +17 -0
- notionary/page/content/renderer/renderers/todo.py +56 -0
- notionary/page/content/renderer/renderers/toggle.py +53 -0
- notionary/page/content/renderer/renderers/toggleable_heading.py +78 -0
- notionary/page/content/renderer/renderers/video.py +31 -0
- notionary/page/content/renderer/service.py +50 -0
- notionary/page/content/service.py +65 -0
- notionary/page/content/syntax/models.py +68 -0
- notionary/page/content/syntax/service.py +453 -0
- notionary/page/page_context.py +7 -16
- notionary/page/page_http_client.py +15 -0
- notionary/page/page_metadata_update_client.py +19 -0
- notionary/page/properties/client.py +144 -0
- notionary/page/properties/factory.py +26 -0
- notionary/page/properties/models.py +307 -0
- notionary/page/properties/service.py +257 -0
- notionary/page/schemas.py +13 -0
- notionary/page/service.py +222 -0
- notionary/shared/entity/client.py +29 -0
- notionary/shared/entity/dto_parsers.py +53 -0
- notionary/shared/entity/entity_metadata_update_client.py +41 -0
- notionary/shared/entity/schemas.py +45 -0
- notionary/shared/entity/service.py +171 -0
- notionary/shared/models/cover.py +20 -0
- notionary/shared/models/file.py +21 -0
- notionary/shared/models/icon.py +28 -0
- notionary/shared/models/parent.py +41 -0
- notionary/shared/properties/type.py +30 -0
- notionary/user/__init__.py +4 -8
- notionary/user/base.py +89 -0
- notionary/user/bot.py +70 -0
- notionary/user/client.py +22 -111
- notionary/user/person.py +41 -0
- notionary/user/schemas.py +67 -0
- notionary/user/service.py +65 -0
- notionary/utils/async_retry.py +39 -0
- notionary/utils/date.py +51 -0
- notionary/utils/fuzzy.py +56 -0
- notionary/{util/logging_mixin.py → utils/mixins/logging.py} +4 -16
- notionary/utils/pagination.py +50 -0
- notionary/utils/singleton.py +13 -0
- notionary/utils/uuid_utils.py +20 -0
- notionary/workspace/__init__.py +3 -0
- notionary/workspace/client.py +62 -0
- notionary/workspace/query/builder.py +60 -0
- notionary/workspace/query/models.py +60 -0
- notionary/workspace/query/service.py +93 -0
- notionary/workspace/schemas.py +21 -0
- notionary/workspace/service.py +116 -0
- {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info}/METADATA +54 -49
- notionary-0.2.28.dist-info/RECORD +200 -0
- {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info}/WHEEL +1 -1
- {notionary-0.2.26.dist-info → notionary-0.2.28.dist-info/licenses}/LICENSE +9 -9
- notionary/base_notion_client.py +0 -219
- notionary/blocks/__init__.py +0 -5
- notionary/blocks/_bootstrap.py +0 -271
- notionary/blocks/audio/__init__.py +0 -11
- notionary/blocks/audio/audio_element.py +0 -158
- notionary/blocks/audio/audio_markdown_node.py +0 -24
- notionary/blocks/audio/audio_models.py +0 -10
- notionary/blocks/base_block_element.py +0 -42
- notionary/blocks/bookmark/__init__.py +0 -12
- notionary/blocks/bookmark/bookmark_element.py +0 -83
- notionary/blocks/bookmark/bookmark_markdown_node.py +0 -28
- notionary/blocks/bookmark/bookmark_models.py +0 -15
- notionary/blocks/breadcrumbs/__init__.py +0 -15
- notionary/blocks/breadcrumbs/breadcrumb_element.py +0 -39
- notionary/blocks/breadcrumbs/breadcrumb_markdown_node.py +0 -13
- notionary/blocks/breadcrumbs/breadcrumb_models.py +0 -12
- notionary/blocks/bulleted_list/__init__.py +0 -15
- notionary/blocks/bulleted_list/bulleted_list_element.py +0 -74
- notionary/blocks/bulleted_list/bulleted_list_markdown_node.py +0 -20
- notionary/blocks/bulleted_list/bulleted_list_models.py +0 -17
- notionary/blocks/callout/__init__.py +0 -12
- notionary/blocks/callout/callout_element.py +0 -99
- notionary/blocks/callout/callout_markdown_node.py +0 -19
- notionary/blocks/callout/callout_models.py +0 -33
- notionary/blocks/child_database/__init__.py +0 -14
- notionary/blocks/child_database/child_database_element.py +0 -59
- notionary/blocks/child_database/child_database_models.py +0 -12
- notionary/blocks/child_page/__init__.py +0 -9
- notionary/blocks/child_page/child_page_element.py +0 -94
- notionary/blocks/child_page/child_page_models.py +0 -12
- notionary/blocks/code/__init__.py +0 -11
- notionary/blocks/code/code_element.py +0 -149
- notionary/blocks/code/code_markdown_node.py +0 -80
- notionary/blocks/code/code_models.py +0 -94
- notionary/blocks/column/__init__.py +0 -25
- notionary/blocks/column/column_element.py +0 -65
- notionary/blocks/column/column_list_element.py +0 -52
- notionary/blocks/column/column_list_markdown_node.py +0 -34
- notionary/blocks/column/column_markdown_node.py +0 -42
- notionary/blocks/column/column_models.py +0 -26
- notionary/blocks/divider/__init__.py +0 -12
- notionary/blocks/divider/divider_element.py +0 -41
- notionary/blocks/divider/divider_markdown_node.py +0 -11
- notionary/blocks/divider/divider_models.py +0 -12
- notionary/blocks/embed/__init__.py +0 -12
- notionary/blocks/embed/embed_element.py +0 -98
- notionary/blocks/embed/embed_markdown_node.py +0 -19
- notionary/blocks/embed/embed_models.py +0 -14
- notionary/blocks/equation/__init__.py +0 -13
- notionary/blocks/equation/equation_element.py +0 -133
- notionary/blocks/equation/equation_element_markdown_node.py +0 -23
- notionary/blocks/equation/equation_models.py +0 -11
- notionary/blocks/file/__init__.py +0 -23
- notionary/blocks/file/file_element.py +0 -133
- notionary/blocks/file/file_element_markdown_node.py +0 -24
- notionary/blocks/file/file_element_models.py +0 -39
- notionary/blocks/heading/__init__.py +0 -19
- notionary/blocks/heading/heading_element.py +0 -112
- notionary/blocks/heading/heading_markdown_node.py +0 -16
- notionary/blocks/heading/heading_models.py +0 -29
- notionary/blocks/image_block/__init__.py +0 -11
- notionary/blocks/image_block/image_element.py +0 -130
- notionary/blocks/image_block/image_markdown_node.py +0 -25
- notionary/blocks/image_block/image_models.py +0 -10
- notionary/blocks/markdown/markdown_builder.py +0 -525
- notionary/blocks/markdown/markdown_document_model.py +0 -0
- notionary/blocks/markdown/markdown_node.py +0 -25
- notionary/blocks/mixins/captions/__init__.py +0 -4
- notionary/blocks/mixins/captions/caption_markdown_node_mixin.py +0 -31
- notionary/blocks/mixins/captions/caption_mixin.py +0 -92
- notionary/blocks/mixins/file_upload/__init__.py +0 -3
- notionary/blocks/mixins/file_upload/file_upload_mixin.py +0 -320
- notionary/blocks/models.py +0 -174
- notionary/blocks/numbered_list/__init__.py +0 -16
- notionary/blocks/numbered_list/numbered_list_element.py +0 -65
- notionary/blocks/numbered_list/numbered_list_markdown_node.py +0 -17
- notionary/blocks/numbered_list/numbered_list_models.py +0 -17
- notionary/blocks/paragraph/__init__.py +0 -15
- notionary/blocks/paragraph/paragraph_element.py +0 -58
- notionary/blocks/paragraph/paragraph_markdown_node.py +0 -16
- notionary/blocks/paragraph/paragraph_models.py +0 -16
- notionary/blocks/pdf/__init__.py +0 -11
- notionary/blocks/pdf/pdf_element.py +0 -146
- notionary/blocks/pdf/pdf_markdown_node.py +0 -24
- notionary/blocks/pdf/pdf_models.py +0 -11
- notionary/blocks/quote/__init__.py +0 -14
- notionary/blocks/quote/quote_element.py +0 -75
- notionary/blocks/quote/quote_markdown_node.py +0 -16
- notionary/blocks/quote/quote_models.py +0 -18
- notionary/blocks/registry/__init__.py +0 -3
- notionary/blocks/registry/block_registry.py +0 -150
- notionary/blocks/rich_text/__init__.py +0 -33
- notionary/blocks/rich_text/rich_text_models.py +0 -221
- notionary/blocks/rich_text/text_inline_formatter.py +0 -456
- notionary/blocks/syntax_prompt_builder.py +0 -137
- notionary/blocks/table/__init__.py +0 -19
- notionary/blocks/table/table_element.py +0 -225
- notionary/blocks/table/table_markdown_node.py +0 -42
- notionary/blocks/table/table_models.py +0 -28
- notionary/blocks/table_of_contents/__init__.py +0 -17
- notionary/blocks/table_of_contents/table_of_contents_element.py +0 -80
- notionary/blocks/table_of_contents/table_of_contents_markdown_node.py +0 -21
- notionary/blocks/table_of_contents/table_of_contents_models.py +0 -18
- notionary/blocks/todo/__init__.py +0 -12
- notionary/blocks/todo/todo_element.py +0 -81
- notionary/blocks/todo/todo_markdown_node.py +0 -21
- notionary/blocks/todo/todo_models.py +0 -18
- notionary/blocks/toggle/__init__.py +0 -12
- notionary/blocks/toggle/toggle_element.py +0 -112
- notionary/blocks/toggle/toggle_markdown_node.py +0 -31
- notionary/blocks/toggle/toggle_models.py +0 -17
- notionary/blocks/toggleable_heading/__init__.py +0 -11
- notionary/blocks/toggleable_heading/toggleable_heading_element.py +0 -115
- notionary/blocks/toggleable_heading/toggleable_heading_markdown_node.py +0 -34
- notionary/blocks/types.py +0 -130
- notionary/blocks/video/__init__.py +0 -11
- notionary/blocks/video/video_element.py +0 -187
- notionary/blocks/video/video_element_models.py +0 -10
- notionary/blocks/video/video_markdown_node.py +0 -26
- notionary/comments/__init__.py +0 -26
- notionary/database/__init__.py +0 -4
- notionary/database/database.py +0 -480
- notionary/database/database_filter_builder.py +0 -173
- notionary/database/database_provider.py +0 -227
- notionary/database/exceptions.py +0 -13
- notionary/database/factory.py +0 -0
- notionary/database/models.py +0 -337
- notionary/database/notion_database.py +0 -487
- notionary/file_upload/__init__.py +0 -7
- notionary/page/client.py +0 -124
- notionary/page/markdown_whitespace_processor.py +0 -129
- notionary/page/models.py +0 -322
- notionary/page/notion_page.py +0 -674
- notionary/page/page_content_deleting_service.py +0 -117
- notionary/page/page_content_writer.py +0 -80
- notionary/page/property_formatter.py +0 -99
- notionary/page/reader/handler/__init__.py +0 -19
- notionary/page/reader/handler/base_block_renderer.py +0 -44
- notionary/page/reader/handler/block_processing_context.py +0 -35
- notionary/page/reader/handler/block_rendering_context.py +0 -48
- notionary/page/reader/handler/column_list_renderer.py +0 -51
- notionary/page/reader/handler/column_renderer.py +0 -60
- notionary/page/reader/handler/equation_renderer.py +0 -0
- notionary/page/reader/handler/line_renderer.py +0 -73
- notionary/page/reader/handler/numbered_list_renderer.py +0 -85
- notionary/page/reader/handler/toggle_renderer.py +0 -69
- notionary/page/reader/handler/toggleable_heading_renderer.py +0 -89
- notionary/page/reader/page_content_retriever.py +0 -81
- notionary/page/search_filter_builder.py +0 -132
- notionary/page/utils.py +0 -60
- notionary/page/writer/handler/__init__.py +0 -24
- notionary/page/writer/handler/code_handler.py +0 -72
- notionary/page/writer/handler/column_handler.py +0 -141
- notionary/page/writer/handler/column_list_handler.py +0 -139
- notionary/page/writer/handler/equation_handler.py +0 -74
- notionary/page/writer/handler/line_handler.py +0 -35
- notionary/page/writer/handler/line_processing_context.py +0 -54
- notionary/page/writer/handler/regular_line_handler.py +0 -86
- notionary/page/writer/handler/table_handler.py +0 -66
- notionary/page/writer/handler/toggle_handler.py +0 -159
- notionary/page/writer/handler/toggleable_heading_handler.py +0 -174
- notionary/page/writer/markdown_to_notion_converter.py +0 -139
- notionary/page/writer/markdown_to_notion_converter_context.py +0 -30
- notionary/page/writer/markdown_to_notion_text_length_post_processor.py +0 -0
- notionary/page/writer/notion_text_length_processor.py +0 -150
- notionary/schemas/__init__.py +0 -3
- notionary/schemas/base.py +0 -73
- notionary/shared/__init__.py +0 -3
- notionary/shared/name_to_id_resolver.py +0 -203
- notionary/telemetry/__init__.py +0 -19
- notionary/telemetry/service.py +0 -136
- notionary/telemetry/views.py +0 -73
- notionary/user/base_notion_user.py +0 -53
- notionary/user/models.py +0 -84
- notionary/user/notion_bot_user.py +0 -226
- notionary/user/notion_user.py +0 -255
- notionary/user/notion_user_manager.py +0 -101
- notionary/util/__init__.py +0 -15
- notionary/util/concurrency_limiter.py +0 -0
- notionary/util/factory_decorator.py +0 -0
- notionary/util/factory_only.py +0 -37
- notionary/util/fuzzy.py +0 -75
- notionary/util/page_id_utils.py +0 -27
- notionary/util/singleton.py +0 -18
- notionary/util/singleton_metaclass.py +0 -22
- notionary/workspace.py +0 -105
- notionary-0.2.26.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
|
notionary/util/page_id_utils.py
DELETED
@@ -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)
|
notionary/util/singleton.py
DELETED
@@ -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=P8J2lvq7xM0UwbL0wEFGi9w7jNPg43ewutmYpJINe1w,23662
|
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.26.dist-info/LICENSE,sha256=zOm3cRT1qD49eg7vgw95MI79rpUAZa1kRBFwL2FkAr8,1120
|
200
|
-
notionary-0.2.26.dist-info/METADATA,sha256=YQ47PvnCFcARf1p99-fZWoYnedbR0S5G2rQRUa6e4KY,9143
|
201
|
-
notionary-0.2.26.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
202
|
-
notionary-0.2.26.dist-info/RECORD,,
|