notionary 0.3.0__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. notionary/__init__.py +9 -2
  2. notionary/blocks/enums.py +27 -0
  3. notionary/comments/client.py +6 -9
  4. notionary/data_source/http/data_source_instance_client.py +4 -4
  5. notionary/data_source/query/__init__.py +9 -0
  6. notionary/data_source/query/builder.py +12 -3
  7. notionary/data_source/query/schema.py +5 -0
  8. notionary/data_source/service.py +14 -112
  9. notionary/database/service.py +16 -58
  10. notionary/exceptions/__init__.py +4 -0
  11. notionary/exceptions/block_parsing.py +21 -0
  12. notionary/http/client.py +1 -1
  13. notionary/page/content/factory.py +2 -0
  14. notionary/page/content/parser/pre_processsing/handlers/__init__.py +2 -0
  15. notionary/page/content/parser/pre_processsing/handlers/column_syntax.py +12 -8
  16. notionary/page/content/parser/pre_processsing/handlers/indentation.py +2 -0
  17. notionary/page/content/parser/pre_processsing/handlers/video_syntax.py +66 -0
  18. notionary/page/content/parser/pre_processsing/handlers/whitespace.py +2 -0
  19. notionary/page/properties/client.py +2 -2
  20. notionary/page/properties/service.py +14 -3
  21. notionary/page/service.py +17 -78
  22. notionary/shared/entity/service.py +94 -36
  23. notionary/utils/pagination.py +36 -32
  24. notionary/workspace/__init__.py +2 -2
  25. notionary/workspace/client.py +2 -0
  26. notionary/workspace/query/__init__.py +2 -2
  27. notionary/workspace/query/builder.py +25 -1
  28. notionary/workspace/query/models.py +9 -1
  29. notionary/workspace/query/service.py +29 -11
  30. notionary/workspace/service.py +31 -21
  31. {notionary-0.3.0.dist-info → notionary-0.3.1.dist-info}/METADATA +9 -5
  32. {notionary-0.3.0.dist-info → notionary-0.3.1.dist-info}/RECORD +34 -32
  33. {notionary-0.3.0.dist-info → notionary-0.3.1.dist-info}/WHEEL +0 -0
  34. {notionary-0.3.0.dist-info → notionary-0.3.1.dist-info}/licenses/LICENSE +0 -0
@@ -8,7 +8,7 @@ from notionary.workspace.query.models import (
8
8
  )
9
9
 
10
10
 
11
- class WorkspaceQueryConfigBuilder:
11
+ class NotionWorkspaceQueryConfigBuilder:
12
12
  def __init__(self, config: WorkspaceQueryConfig = None) -> None:
13
13
  self.config = config or WorkspaceQueryConfig()
14
14
 
@@ -16,6 +16,10 @@ class WorkspaceQueryConfigBuilder:
16
16
  self.config.query = query
17
17
  return self
18
18
 
19
+ def with_total_results_limit(self, limit: int) -> Self:
20
+ self.config.total_results_limit = limit
21
+ return self
22
+
19
23
  def with_pages_only(self) -> Self:
20
24
  self.config.object_type = WorkspaceQueryObjectType.PAGE
21
25
  return self
@@ -44,6 +48,26 @@ class WorkspaceQueryConfigBuilder:
44
48
  def with_sort_by_last_edited(self) -> Self:
45
49
  return self.with_sort_timestamp(SortTimestamp.LAST_EDITED_TIME)
46
50
 
51
+ def with_sort_by_created_time_ascending(self) -> Self:
52
+ self.config.sort_timestamp = SortTimestamp.CREATED_TIME
53
+ self.config.sort_direction = SortDirection.ASCENDING
54
+ return self
55
+
56
+ def with_sort_by_created_time_descending(self) -> Self:
57
+ self.config.sort_timestamp = SortTimestamp.CREATED_TIME
58
+ self.config.sort_direction = SortDirection.DESCENDING
59
+ return self
60
+
61
+ def with_sort_by_last_edited_ascending(self) -> Self:
62
+ self.config.sort_timestamp = SortTimestamp.LAST_EDITED_TIME
63
+ self.config.sort_direction = SortDirection.ASCENDING
64
+ return self
65
+
66
+ def with_sort_by_last_edited_descending(self) -> Self:
67
+ self.config.sort_timestamp = SortTimestamp.LAST_EDITED_TIME
68
+ self.config.sort_direction = SortDirection.DESCENDING
69
+ return self
70
+
47
71
  def with_page_size(self, size: int) -> Self:
48
72
  self.config.page_size = min(size, 100)
49
73
  return self
@@ -1,10 +1,15 @@
1
1
  from enum import StrEnum
2
+ from typing import Protocol
2
3
 
3
4
  from pydantic import BaseModel, Field, field_validator, model_serializer
4
5
 
5
6
  from notionary.shared.typings import JsonDict
6
7
 
7
8
 
9
+ class SearchableEntity(Protocol):
10
+ title: str
11
+
12
+
8
13
  class SortDirection(StrEnum):
9
14
  ASCENDING = "ascending"
10
15
  DESCENDING = "descending"
@@ -25,9 +30,12 @@ class WorkspaceQueryConfig(BaseModel):
25
30
  object_type: WorkspaceQueryObjectType | None = None
26
31
  sort_direction: SortDirection = SortDirection.DESCENDING
27
32
  sort_timestamp: SortTimestamp = SortTimestamp.LAST_EDITED_TIME
33
+
28
34
  page_size: int = Field(default=100, ge=1, le=100)
29
35
  start_cursor: str | None = None
30
36
 
37
+ total_results_limit: int | None = None
38
+
31
39
  @field_validator("query")
32
40
  @classmethod
33
41
  def replace_empty_query_with_none(cls, value: str | None) -> str | None:
@@ -36,7 +44,7 @@ class WorkspaceQueryConfig(BaseModel):
36
44
  return value
37
45
 
38
46
  @model_serializer
39
- def serialize_model(self) -> JsonDict:
47
+ def to_api_params(self) -> JsonDict:
40
48
  search_dict: JsonDict = {}
41
49
 
42
50
  if self.query:
@@ -2,22 +2,18 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  from collections.abc import AsyncIterator
5
- from typing import TYPE_CHECKING, Protocol
5
+ from typing import TYPE_CHECKING
6
6
 
7
7
  from notionary.exceptions.search import DatabaseNotFound, DataSourceNotFound, PageNotFound
8
8
  from notionary.utils.fuzzy import find_all_matches
9
9
  from notionary.workspace.client import WorkspaceClient
10
- from notionary.workspace.query.builder import WorkspaceQueryConfigBuilder
11
- from notionary.workspace.query.models import WorkspaceQueryConfig
10
+ from notionary.workspace.query.builder import NotionWorkspaceQueryConfigBuilder
11
+ from notionary.workspace.query.models import SearchableEntity, WorkspaceQueryConfig
12
12
 
13
13
  if TYPE_CHECKING:
14
14
  from notionary import NotionDatabase, NotionDataSource, NotionPage
15
15
 
16
16
 
17
- class SearchableEntity(Protocol):
18
- title: str
19
-
20
-
21
17
  class WorkspaceQueryService:
22
18
  def __init__(self, client: WorkspaceClient | None = None) -> None:
23
19
  self._client = client or WorkspaceClient()
@@ -49,20 +45,42 @@ class WorkspaceQueryService:
49
45
  return await asyncio.gather(*data_source_tasks)
50
46
 
51
47
  async def find_data_source(self, query: str) -> NotionDataSource:
52
- config = WorkspaceQueryConfigBuilder().with_query(query).with_data_sources_only().with_page_size(100).build()
48
+ config = (
49
+ NotionWorkspaceQueryConfigBuilder()
50
+ .with_query(query)
51
+ .with_data_sources_only()
52
+ .with_page_size(100)
53
+ .build()
54
+ )
53
55
  data_sources = await self.get_data_sources(config)
54
56
  return self._find_exact_match(data_sources, query, DataSourceNotFound)
55
57
 
56
58
  async def find_page(self, query: str) -> NotionPage:
57
- config = WorkspaceQueryConfigBuilder().with_query(query).with_pages_only().with_page_size(100).build()
59
+ config = (
60
+ NotionWorkspaceQueryConfigBuilder()
61
+ .with_query(query)
62
+ .with_pages_only()
63
+ .with_page_size(100)
64
+ .build()
65
+ )
58
66
  pages = await self.get_pages(config)
59
67
  return self._find_exact_match(pages, query, PageNotFound)
60
68
 
61
69
  async def find_database(self, query: str) -> NotionDatabase:
62
- config = WorkspaceQueryConfigBuilder().with_query(query).with_data_sources_only().with_page_size(100).build()
70
+ config = (
71
+ NotionWorkspaceQueryConfigBuilder()
72
+ .with_query(query)
73
+ .with_data_sources_only()
74
+ .with_page_size(100)
75
+ .build()
76
+ )
63
77
  data_sources = await self.get_data_sources(config)
64
78
 
65
- parent_database_tasks = [data_source.get_parent_database() for data_source in data_sources]
79
+ parent_database_ids = [data_sources.get_parent_database_id_if_present() for data_sources in data_sources]
80
+ # filter none values which should not happen but for safety
81
+ parent_database_ids = [id for id in parent_database_ids if id is not None]
82
+
83
+ parent_database_tasks = [NotionDatabase.from_id(db_id) for db_id in parent_database_ids]
66
84
  parent_databases = await asyncio.gather(*parent_database_tasks)
67
85
  potential_databases = [database for database in parent_databases if database is not None]
68
86
 
@@ -4,7 +4,7 @@ from collections.abc import AsyncIterator, Callable
4
4
  from typing import TYPE_CHECKING, Self
5
5
 
6
6
  from notionary.user.service import UserService
7
- from notionary.workspace.query.builder import WorkspaceQueryConfigBuilder
7
+ from notionary.workspace.query.builder import NotionWorkspaceQueryConfigBuilder
8
8
  from notionary.workspace.query.models import WorkspaceQueryConfig, WorkspaceQueryObjectType
9
9
  from notionary.workspace.query.service import WorkspaceQueryService
10
10
 
@@ -13,7 +13,9 @@ if TYPE_CHECKING:
13
13
  from notionary.page.service import NotionPage
14
14
  from notionary.user import BotUser, PersonUser
15
15
 
16
- type _QueryConfigInput = WorkspaceQueryConfig | Callable[[WorkspaceQueryConfigBuilder], WorkspaceQueryConfigBuilder]
16
+ type _QueryConfigInput = (
17
+ WorkspaceQueryConfig | Callable[[NotionWorkspaceQueryConfigBuilder], NotionWorkspaceQueryConfigBuilder]
18
+ )
17
19
 
18
20
 
19
21
  class NotionWorkspace:
@@ -43,14 +45,14 @@ class NotionWorkspace:
43
45
  self,
44
46
  config: _QueryConfigInput | None = None,
45
47
  ) -> list[NotionPage]:
46
- query_config = self._resolve_config(config, default_object_type_to_query=WorkspaceQueryObjectType.PAGE)
48
+ query_config = self._resolve_config(config, WorkspaceQueryObjectType.PAGE)
47
49
  return await self._query_service.get_pages(query_config)
48
50
 
49
51
  async def get_pages_stream(
50
52
  self,
51
53
  config: _QueryConfigInput | None = None,
52
54
  ) -> AsyncIterator[NotionPage]:
53
- query_config = self._resolve_config(config, default_object_type_to_query=WorkspaceQueryObjectType.PAGE)
55
+ query_config = self._resolve_config(config, WorkspaceQueryObjectType.PAGE)
54
56
  async for page in self._query_service.get_pages_stream(query_config):
55
57
  yield page
56
58
 
@@ -58,41 +60,49 @@ class NotionWorkspace:
58
60
  self,
59
61
  config: _QueryConfigInput | None = None,
60
62
  ) -> list[NotionDataSource]:
61
- query_config = self._resolve_config(config, default_object_type_to_query=WorkspaceQueryObjectType.DATA_SOURCE)
63
+ query_config = self._resolve_config(config, WorkspaceQueryObjectType.DATA_SOURCE)
62
64
  return await self._query_service.get_data_sources(query_config)
63
65
 
64
66
  async def get_data_sources_stream(
65
67
  self,
66
68
  config: _QueryConfigInput | None = None,
67
69
  ) -> AsyncIterator[NotionDataSource]:
68
- query_config = self._resolve_config(config, default_object_type_to_query=WorkspaceQueryObjectType.DATA_SOURCE)
70
+ query_config = self._resolve_config(config, WorkspaceQueryObjectType.DATA_SOURCE)
69
71
  async for data_source in self._query_service.get_data_sources_stream(query_config):
70
72
  yield data_source
71
73
 
72
74
  def _resolve_config(
73
75
  self,
74
76
  config: _QueryConfigInput | None,
75
- default_object_type_to_query: WorkspaceQueryObjectType,
77
+ expected_object_type: WorkspaceQueryObjectType,
76
78
  ) -> WorkspaceQueryConfig:
77
- if isinstance(config, WorkspaceQueryConfig):
78
- return config
79
-
80
- builder = self._create_builder_with_defaults(default_object_type_to_query)
79
+ if config is None:
80
+ return self._create_default_config(expected_object_type)
81
81
 
82
- if callable(config):
83
- config(builder)
82
+ if isinstance(config, WorkspaceQueryConfig):
83
+ return self._ensure_correct_object_type(config, expected_object_type)
84
84
 
85
- return builder.build()
85
+ return self._build_config_from_callable(config, expected_object_type)
86
86
 
87
- def _create_builder_with_defaults(self, object_type: WorkspaceQueryObjectType) -> WorkspaceQueryConfigBuilder:
88
- builder = WorkspaceQueryConfigBuilder()
87
+ def _create_default_config(self, object_type: WorkspaceQueryObjectType) -> WorkspaceQueryConfig:
88
+ return WorkspaceQueryConfig(object_type=object_type)
89
89
 
90
- if object_type == WorkspaceQueryObjectType.PAGE:
91
- builder.with_pages_only()
92
- else:
93
- builder.with_data_sources_only()
90
+ def _build_config_from_callable(
91
+ self,
92
+ config_callable: Callable[[NotionWorkspaceQueryConfigBuilder], NotionWorkspaceQueryConfigBuilder],
93
+ expected_object_type: WorkspaceQueryObjectType,
94
+ ) -> WorkspaceQueryConfig:
95
+ builder = NotionWorkspaceQueryConfigBuilder()
96
+ config_callable(builder)
97
+ return self._ensure_correct_object_type(builder.build(), expected_object_type)
94
98
 
95
- return builder
99
+ def _ensure_correct_object_type(
100
+ self,
101
+ config: WorkspaceQueryConfig,
102
+ expected_object_type: WorkspaceQueryObjectType,
103
+ ) -> WorkspaceQueryConfig:
104
+ config.object_type = expected_object_type
105
+ return config
96
106
 
97
107
  async def get_users(self) -> list[PersonUser]:
98
108
  return [user async for user in self._user_service.list_users_stream()]
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: notionary
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Python library for programmatic Notion workspace management - databases, pages, and content with advanced Markdown support
5
5
  Project-URL: Homepage, https://github.com/mathisarends/notionary
6
6
  Author-email: Mathis Arends <mathisarends27@gmail.com>
7
7
  License: MIT
8
8
  License-File: LICENSE
9
- Requires-Python: >=3.11
9
+ Requires-Python: >=3.12
10
10
  Requires-Dist: aiofiles<25.0.0,>=24.1.0
11
11
  Requires-Dist: httpx>=0.28.0
12
12
  Requires-Dist: pydantic>=2.11.4
@@ -23,9 +23,13 @@ Description-Content-Type: text/markdown
23
23
 
24
24
  <div align="center">
25
25
 
26
- [![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)
27
- [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
28
- [![Documentation](https://img.shields.io/badge/docs-mathisarends.github.io-blue.svg)](https://mathisarends.github.io/notionary/)
26
+ [![PyPI version](https://badge.fury.io/py/notionary.svg)](https://badge.fury.io/py/notionary)
27
+ [![Python Version](https://img.shields.io/badge/python-3.12%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/)
28
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
29
+ [![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/mathisarends/fc0568b66a20fbbaa5018205861c0da9/raw/notionary-coverage.json)](https://github.com/mathisarends/notionary)
30
+ [![Downloads](https://img.shields.io/pypi/dm/notionary?color=blue)](https://pypi.org/project/notionary/)
31
+ [![Documentation](https://img.shields.io/badge/docs-notionary-blue?style=flat&logo=readthedocs)](https://mathisarends.github.io/notionary/)
32
+ [![Notion API](https://img.shields.io/badge/Notion%20API-Official-000000?logo=notion&logoColor=white)](https://developers.notion.com/)
29
33
 
30
34
  **Transform complex Notion API interactions into simple, Pythonic code.**
31
35
  Perfect for developers building AI agents, automation workflows, and dynamic content systems.
@@ -1,7 +1,7 @@
1
- notionary/__init__.py,sha256=YzkqPfuFc4pBBVARb7oPrmARZJfddgcZYTT2XTmQL44,358
1
+ notionary/__init__.py,sha256=_nL90pjfhRkdxatfVRy_l1Ld86MloAmgqlWPKlYtAMc,445
2
2
  notionary/blocks/__init__.py,sha256=LsVUgSsDYlLy-bwLqnukcr4uB8ZcCLMz3fGd4HsNXDY,99
3
3
  notionary/blocks/client.py,sha256=zYy_eFz6NKFGqsESDddiUUZZfV6ybWWyzseThZEdIvI,5551
4
- notionary/blocks/enums.py,sha256=RT2XCC4pTzBLqARtDgt3sQFcdv3Sq7flJWwjCMHqeJU,4165
4
+ notionary/blocks/enums.py,sha256=xr1h-8kZCRRERaAsC4p8wTV7nkX7ili5D-_jNQ61Wk4,4772
5
5
  notionary/blocks/schemas.py,sha256=7ZB4jbNzoKraa8O6yLLXeQXGskisUAzbOm1qHUYosNo,21413
6
6
  notionary/blocks/rich_text/markdown_rich_text_converter.py,sha256=kZyCwKgv4BMTswmIPTyDVrLs4OQ9JQn9O-Qb0rxea1k,11642
7
7
  notionary/blocks/rich_text/models.py,sha256=0aNsB_gpFiqBXAATL4yVMyOy4-zbN0WKB3rEaFQeTKs,4863
@@ -14,30 +14,31 @@ notionary/blocks/rich_text/name_id_resolver/page.py,sha256=DfjXyBLdkYl5UfoU2UGSl
14
14
  notionary/blocks/rich_text/name_id_resolver/person.py,sha256=lhDBhJXL0VRoOu8eJc-uOcqXB78os8V6VePagBboKs8,1301
15
15
  notionary/blocks/rich_text/name_id_resolver/port.py,sha256=VtTavK6rHL-_qTIjFMsO25cgh_oUHNS-qEM_mONOaS0,259
16
16
  notionary/comments/__init__.py,sha256=1LfujehhvWqJmNKft6QvcbwhLlJOGq7cH1uTb4IUR2w,63
17
- notionary/comments/client.py,sha256=iMcZ7OO60Y6z7dRFU3Mx5o808l6EAi0soDJdS-gOzrM,2724
17
+ notionary/comments/client.py,sha256=43raXEooa_kA-iYlUSEFqtQuA9gJ1kHPLsbC0K0H_bE,2593
18
18
  notionary/comments/factory.py,sha256=OmE1CBY5elpbvuSj64EmBfSlmED9VAYIQ65J5jKM15s,1511
19
19
  notionary/comments/models.py,sha256=g-WTDSel8nhyRa60rN0U5FuccU0KVnsnJBi6Uqz7NVw,107
20
20
  notionary/comments/schemas.py,sha256=AWDMeZbtOiaXfb45cxP5UhXOMxAqPYGetXzRWaJOdfQ,6003
21
21
  notionary/comments/service.py,sha256=qRCwTTzjdSD2vgqCJCBPbSO3gyajyUD3JWV3qgiMFe0,1652
22
22
  notionary/data_source/schemas.py,sha256=I1b1HEbOj_uWebgZFjZBLTe82DShxM8Tes4_imyfogU,849
23
- notionary/data_source/service.py,sha256=IrUAIAezYvBJW0FuNC4ZFNJWNJ9shQeOi-DDzlMih8E,14482
23
+ notionary/data_source/service.py,sha256=YFEd6q9ibkE92L8Erq-mpobQ20btzhzlGzJQVknNb28,10842
24
24
  notionary/data_source/http/client.py,sha256=wvaBOIT5OtGdE0QjbcDUsuDnZ0TZ-CyIifBHp6OYTqE,445
25
- notionary/data_source/http/data_source_instance_client.py,sha256=UcD3D1U79QEqsnIGQQ-pXTD0mkw_n2p3NdJte7hhHX4,4931
25
+ notionary/data_source/http/data_source_instance_client.py,sha256=S2cDnUw3ISn7cM7vhdX6PGpAarneZri5NRlILlcBV_s,5006
26
26
  notionary/data_source/properties/schemas.py,sha256=EWUtLplGdjbb688EU5EXWqMU2PSPf2GzGglLwS5wAgg,12067
27
- notionary/data_source/query/builder.py,sha256=RDa1iNmsNDpguKptOjCtEw82h5g4dUEkL0MKPHAALBc,18365
27
+ notionary/data_source/query/__init__.py,sha256=Q3uQf6r0xHYV_i5kn-Gdwf68QKJMnV_7vS_gO4I3kG8,226
28
+ notionary/data_source/query/builder.py,sha256=6oyTtcbs7TiJtitzXDiIk_tCaA3G6uvf_KXIQEJByGU,18740
28
29
  notionary/data_source/query/resolver.py,sha256=zkV-ra2vvKdXAIcDO7zEzjvd_79YKLz6umczK6U8fpo,4370
29
- notionary/data_source/query/schema.py,sha256=WQQY5QCZf_OG_siMRF64yWPnvPIXmxYKFwhpWHfZE3Y,9435
30
+ notionary/data_source/query/schema.py,sha256=PdoboG_b8MDhRw5gfWAnVJpdUJc9b-jcWQs-EUGG8vk,9573
30
31
  notionary/data_source/query/validator.py,sha256=wO0oT2i8d-Vl6ul_4ilXFyOxnOvM64HXdCRJPyu-xdE,3309
31
32
  notionary/data_source/schema/registry.py,sha256=ageQvLYOnU1g65JcZ9cmQWfj0Sv7petNWUBl5eH-eFo,5185
32
33
  notionary/data_source/schema/service.py,sha256=AFkHsOnTOSpf36pr2XHgw16Kna5hzw0GduAdLAh7bMQ,5977
33
34
  notionary/database/client.py,sha256=oLl8iRPkNC7Fuu9tAhXg3iX5n6z_35Nvl-JN8i0aSd4,2213
34
35
  notionary/database/database_metadata_update_client.py,sha256=LryhjGxDgLbRvuOUVvViZCogI0-Op4QkOlQUW4z8Tmg,905
35
36
  notionary/database/schemas.py,sha256=RwhxDRa7v8IAtkXdJLu-gHclliClWmcIfa6xKYCUkZA,853
36
- notionary/database/service.py,sha256=5dEgFAsSfsL3s0YD8ccfLgpnmZWZ4YWoeaYasjSwGD0,6139
37
- notionary/exceptions/__init__.py,sha256=SHJo7TAq7VDY7fDRoaGeRwV7HFmzFaBsxy6hdwQFvO8,1066
37
+ notionary/database/service.py,sha256=yb3bo53wTg5UE2SzaDhqNzxbOnWo38apyiyF4uGZZNo,4449
38
+ notionary/exceptions/__init__.py,sha256=thgYj5f-RacLLaodqUVVi5jsQflMU9FgKjsnB8Q3AAE,1280
38
39
  notionary/exceptions/api.py,sha256=5xCX5Xyaa8CMG2f4_fgkZQezPsSjqDrV27ByOY05meg,790
39
40
  notionary/exceptions/base.py,sha256=vzMtgFalmpXVEOZDkyF0HqW--WBpq2rVJm-IG1f5vlY,44
40
- notionary/exceptions/block_parsing.py,sha256=OFURoDbD2jLsast6Lw4fUCuE57AZUTaWWULYOdefJPw,643
41
+ notionary/exceptions/block_parsing.py,sha256=6Dd_pg6SEIjy9nNfbnmaLLsOPwra76bXbuFRkJ4Z8qg,1475
41
42
  notionary/exceptions/properties.py,sha256=xHAU83C-8fxC1ColcIkA7wyhbAalfdz6Y3JSlFJuhy0,2199
42
43
  notionary/exceptions/search.py,sha256=V3l-v5YcR5-zMcLw-A5rvCFMc0xhlWY6nVEVC8HMsDk,2160
43
44
  notionary/exceptions/data_source/__init__.py,sha256=Xs4I-zVxVQiVhfTclJX7GuGVO5fMYQIWqiqFnh_O67M,170
@@ -46,15 +47,15 @@ notionary/exceptions/data_source/properties.py,sha256=WrudbojMa_ktCXvpe0OwegqI-P
46
47
  notionary/file_upload/client.py,sha256=TVmtMi5iBrgUFLDb7emCwUetmfbTpVFFTnurJ-qU_gw,8384
47
48
  notionary/file_upload/models.py,sha256=7a82S1c1PySTulyKJjrOQ-i986W8d3FbCkyGkyUumYc,1738
48
49
  notionary/file_upload/service.py,sha256=WcqEE2OfZQ8EhYQWHKzy-Usnd8KzVI3M-1UFWJbJco8,12701
49
- notionary/http/client.py,sha256=kArX1-THEF9fs0zjzodeoeKi0o5t5MagRX3E7nwFe7g,7685
50
+ notionary/http/client.py,sha256=FsrNcxSW99AFu6Gkhre53XcwAHkZZwe9h6H_z_FiGoU,7696
50
51
  notionary/http/models.py,sha256=fvjKAGX-b6JcJ-W7V3DEt4v3SnsdikMa6N0c4aolslY,1352
51
52
  notionary/page/page_context.py,sha256=dMxGuzNerfcfy6boRPrcEwxCsuNNeFwzQZg-BdeDgec,1506
52
53
  notionary/page/page_http_client.py,sha256=YQdXkfMGu2wuJpALJBIsKKwoHv316n_sMjne-iqJYHc,445
53
54
  notionary/page/page_metadata_update_client.py,sha256=jJc3SMFnt98YBAb9ie_OxQBXAiXpeCzslOcRRRGwVks,865
54
55
  notionary/page/schemas.py,sha256=rEq1TSEGft8Y1P4ATcpYfxk7h_T7bLRxA2__dA2HJzQ,388
55
- notionary/page/service.py,sha256=tKzk12gqfxJfxcJTIip71iFKgu7YWXHSpl7worttYHM,8561
56
+ notionary/page/service.py,sha256=2s89lgxxdE-TwRnmMdVTKtEXNuK4ufhLfP-4jhiQdhI,6185
56
57
  notionary/page/blocks/client.py,sha256=2ukLeaYdFJCGzpQr-3eIZRFG2potXS-3MdKLoRha9bc,19
57
- notionary/page/content/factory.py,sha256=hBnhR2utE6iHIWvBQiRpy17mDY3duaoRgJ4g9rbz9CI,3671
58
+ notionary/page/content/factory.py,sha256=MRrHgHIruOVJ1Atew4eF4thPTj2L73QVCbfc9YdYFEM,3760
58
59
  notionary/page/content/service.py,sha256=5beyQrQMyjo5Mq6c0uaj3nfbKSA3ujU1aaKiKJN7r3U,2973
59
60
  notionary/page/content/markdown/__init__.py,sha256=dhBiNIbiyG38eppjXC0fkZk3NVXzRGC8xqoE89jWHG0,80
60
61
  notionary/page/content/markdown/builder.py,sha256=1t4_0mWedf9OM2V1DdDbtHxte8LWsgt8kCx3OkIVFR8,9008
@@ -122,11 +123,12 @@ notionary/page/content/parser/post_processing/handlers/__init__.py,sha256=Io7Qw_
122
123
  notionary/page/content/parser/post_processing/handlers/rich_text_length.py,sha256=mFiKqq-dPHzUnjXHrWmHRXeU5WUCdGk7HplDxvCCbaE,3571
123
124
  notionary/page/content/parser/post_processing/handlers/rich_text_length_truncation.py,sha256=UZhH3ifJtiJrV22jBAQqnTAWWJCAhmp0F4n0gY1RAE0,4143
124
125
  notionary/page/content/parser/pre_processsing/service.py,sha256=moa5sHuNvzUQCVGe-4IvqrCEWtIaEMD6M7FMjLXENcM,507
125
- notionary/page/content/parser/pre_processsing/handlers/__init__.py,sha256=_sdsV57EiGZ7KEwBgVEpZHrz50TaLX66vw26Bgl4rdA,314
126
- notionary/page/content/parser/pre_processsing/handlers/column_syntax.py,sha256=tEDlGBLW6RV-CKdmqVMY7qhrTzuEpQIOV6OLw2OYEzI,5296
127
- notionary/page/content/parser/pre_processsing/handlers/indentation.py,sha256=lAHcjRpj_ET2XUr8TsuLZJgl593AzKu6dq3E3Bi3VQ8,3236
126
+ notionary/page/content/parser/pre_processsing/handlers/__init__.py,sha256=RX6VC1Q9tJAAjtt92hjOy20fcT7yFZP6PvNBjsp79sE,397
127
+ notionary/page/content/parser/pre_processsing/handlers/column_syntax.py,sha256=pd4uFYCriDZWZmM8Ma7nUZMcPh0DExQO0J37Gfpn1Jo,5456
128
+ notionary/page/content/parser/pre_processsing/handlers/indentation.py,sha256=RconFOfl0VR4_RHa4Kqcv9vmbK5xiXSUEXjoMPf1RJU,3324
128
129
  notionary/page/content/parser/pre_processsing/handlers/port.py,sha256=Gm_GRGl1eGo1C8AM5CUfFdYAofe4Y0gAPScU2O1EcJo,153
129
- notionary/page/content/parser/pre_processsing/handlers/whitespace.py,sha256=KjYpnp00JD2jsNlcjCIHaZ5A7TT9zF2pEHHvzHiasGk,2597
130
+ notionary/page/content/parser/pre_processsing/handlers/video_syntax.py,sha256=O4AA8Gea81NBJklGD-JE4IAeb-IEeWTE2wLTm8BXP1E,2731
131
+ notionary/page/content/parser/pre_processsing/handlers/whitespace.py,sha256=GknAlc4bm2T13MwPz3F-ZP_T_En6-KCQXneqToc2l5I,2685
130
132
  notionary/page/content/renderer/context.py,sha256=yiEl0zHWrvfdqXm3tV7IQkuYhoIKaWv3s_PKCNyhRZ8,2015
131
133
  notionary/page/content/renderer/factory.py,sha256=YUV0FQ55sPYwTpvDg1n-WoBio4UNUTj3cFg7IGzauzk,8901
132
134
  notionary/page/content/renderer/service.py,sha256=llgxgijk6_rYGMLvYW9OdgcpLSk8xxg2mEELRK54CY0,1916
@@ -166,16 +168,16 @@ notionary/page/content/syntax/__init__.py,sha256=0OjmKk1n4QyZS_0nnKfVAFfn2wge2f4
166
168
  notionary/page/content/syntax/grammar.py,sha256=vWJ1rgtekcRH4uIb94q83kYaBxmDD0E5YS7oGQR_1Aw,252
167
169
  notionary/page/content/syntax/models.py,sha256=pkFoQVMu4eg6xIyi9JYkeRgegrB-QUAw7wlRrIKGIXE,1830
168
170
  notionary/page/content/syntax/registry.py,sha256=RsN974l_ddwIv9V4WYFUcEVAo34_BcGiPdrXOtwdYYg,15697
169
- notionary/page/properties/client.py,sha256=_VyiVdiN9G6MaZnzqCmsF8xWTC_dyr_Wly3JHLZ-52E,6723
171
+ notionary/page/properties/client.py,sha256=k4iS64txrzhWbaAn_xSzQ31b0yx6JLDh_madCCSLU14,6749
170
172
  notionary/page/properties/factory.py,sha256=YnVWZ98RGYpV9iEY4Ufk7InIoeP9vWwMn5sSvcbSQ2k,1248
171
173
  notionary/page/properties/models.py,sha256=G3e7vzmk3kU6G1c0oWX9QlKMdaPOuKwR76CscOUPJMg,8878
172
- notionary/page/properties/service.py,sha256=ypkIw9GaqF-Uy_GhZOEo_t3BInutgThwhcTY_hEplAg,12842
174
+ notionary/page/properties/service.py,sha256=RDPM6E3XaigzhW6fsIYKpZGqy_ErW88iQ2POmd1VrDA,13178
173
175
  notionary/shared/typings.py,sha256=LKg_NJvqi0ZuyB6I995zg4XCyijGKY0T_bW90YiI5_g,58
174
176
  notionary/shared/entity/client.py,sha256=knblCIKwUHgoxJ_z7QtrRES9E8P9keHQTvr6CMc69gA,1181
175
177
  notionary/shared/entity/dto_parsers.py,sha256=yaADwtL9S6mlQzLSNlW71trL0E3FPBmykgI6wuLNKKU,2086
176
178
  notionary/shared/entity/entity_metadata_update_client.py,sha256=MKNT6W4ZUVffdB1BzXBqcWuTqaaBBqZ7Q9cRLrynKOI,1769
177
179
  notionary/shared/entity/schemas.py,sha256=-NDlmw3dWANFx2Nw_x1WKhtmp_PmcuzpJ2Tsxx7O23c,1132
178
- notionary/shared/entity/service.py,sha256=8Q_mABjEGZvfGh3h5F0r6MGfoHUoWKWYSgGMPThjCF4,6089
180
+ notionary/shared/entity/service.py,sha256=zB46PPnukgN7VQNwqQTKXvQclSDKgxkzgV_0_rIGtAo,8262
179
181
  notionary/shared/models/cover.py,sha256=Qg3I6XS7pQUnsx3VO9_dRHHrt_VmJEpU8h3eu92Cqa0,495
180
182
  notionary/shared/models/file.py,sha256=kU_hiLHEQDirBDoKkIKutXlRTSv3-hRJRfaoW-1hGtA,442
181
183
  notionary/shared/models/icon.py,sha256=f1NVijUb4B_HhcGA7GtVsS1izycb8u8R7A3uy5qAu0o,603
@@ -192,18 +194,18 @@ notionary/user/service.py,sha256=20DaDC4Eozfzr2sf0VP3z6sORRKmfb5PdtGG02rJews,256
192
194
  notionary/utils/date.py,sha256=HPwqmZoylTFKkyI8q4BJXT3q9B39nE55uVZAyG4JnDw,1729
193
195
  notionary/utils/decorators.py,sha256=jKik6C_2mAzN1f1RUMkhzsqg7vC_tEO-CyYqLTnyTiw,3722
194
196
  notionary/utils/fuzzy.py,sha256=k_D48yHbSd_ecFo3QlrxF5-5c3Bd8gR3bq-_W2J2ZyE,1783
195
- notionary/utils/pagination.py,sha256=Arf9j54SVgXh4WMpiv20buRuAQunwEjHI8pPoaCeQ0M,2951
197
+ notionary/utils/pagination.py,sha256=6h1ZZpgn5YFBBUCGAVntZ45wCeFiQRJhW0JqPPtN9Ws,3343
196
198
  notionary/utils/uuid_utils.py,sha256=ygTQdiKmdtyb2iY7d9kuYbo8uGSeuhiHH2PhUza6ZUw,579
197
199
  notionary/utils/mixins/logging.py,sha256=fCkHFYhNYeVfppCjD5WLKxY7Sr3FHlJ5UhNd7KzrvsM,1662
198
- notionary/workspace/__init__.py,sha256=J3Dbb3t1Ryf_gBhNELLOeQJ8s124ki6cdhEl91-WoqY,150
199
- notionary/workspace/client.py,sha256=1gq3omouawJqyewN1PaTcKJWbdJQG9dVAxP-ZlCJB9w,2311
200
+ notionary/workspace/__init__.py,sha256=DlLV8qNtiuXxru5CorfMkBs_g7SkPalpnN0eNDkODM8,162
201
+ notionary/workspace/client.py,sha256=yChqszwc1FZeuWboqDSEMSkBPNhDO5buOGpdWqJDxLM,2447
200
202
  notionary/workspace/schemas.py,sha256=uITRJpqHZD7LF7wOqZ6Cdx51a4Uk9rWZ110ib9EbIrA,562
201
- notionary/workspace/service.py,sha256=7OM8GCYHwNYfaNxKHfSBZKelEeVMHbl0I8x2uQzEO8s,4524
202
- notionary/workspace/query/__init__.py,sha256=NE-Hausc1m2DsBAh9lesoH7hbxolREa0ZIBJWqKFsD4,95
203
- notionary/workspace/query/builder.py,sha256=H2n9x7HKf5KG3wavugr-W5ouV8-atHQSk_CJkMBhJnY,1898
204
- notionary/workspace/query/models.py,sha256=eTIBLPpTI24hufb83KRrBYVmuWBvtuv1w1cMz3UdC_s,1721
205
- notionary/workspace/query/service.py,sha256=-9FwbeQQSCwscFom7Gv5_nyR8ELDBoCWYO16acxVqt0,4485
206
- notionary-0.3.0.dist-info/METADATA,sha256=zHT1z36IRZ4pP7onTdavIxEZPlrrF_fG9SHzfS_O9uU,5884
207
- notionary-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
208
- notionary-0.3.0.dist-info/licenses/LICENSE,sha256=FLNy3l12swSnCggq3zOW_3gh4uaZ12DGZL1tR6Bc5Sk,1102
209
- notionary-0.3.0.dist-info/RECORD,,
203
+ notionary/workspace/service.py,sha256=-zznI2_-nBGf_fMVSDkzhe9uqmPv7N0aRTdA21tQ30Q,4983
204
+ notionary/workspace/query/__init__.py,sha256=aw0tu_k4OIYo5nzgQZQZSrQT0HBkyS_4z9g8shiT6-A,107
205
+ notionary/workspace/query/builder.py,sha256=0QV0OHAWIU0O5tXOeTQFKKNNmwaC81nLk_ecHrxdokE,2887
206
+ notionary/workspace/query/models.py,sha256=isebZ9wyvj75C65nhw3VsuJygyZmgZBNX8D5VOf3TAM,1851
207
+ notionary/workspace/query/service.py,sha256=EEHNwZnstoOyBeBa9yGWYs9n54el-IZ-wIWUwhjrxv8,4975
208
+ notionary-0.3.1.dist-info/METADATA,sha256=gq4kaA_KvdA2n1a4hM1XoAEzMWgkNVJ5D04LTsG2pCw,6493
209
+ notionary-0.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
210
+ notionary-0.3.1.dist-info/licenses/LICENSE,sha256=FLNy3l12swSnCggq3zOW_3gh4uaZ12DGZL1tR6Bc5Sk,1102
211
+ notionary-0.3.1.dist-info/RECORD,,