notionary 0.1.13__py3-none-any.whl → 0.1.14__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 +2 -2
- notionary/{converters/elements → elements}/audio_element.py +1 -1
- notionary/{converters/registry → elements}/block_element_registry.py +2 -5
- notionary/elements/block_element_registry_builder.py +401 -0
- notionary/{converters/elements → elements}/bookmark_element.py +1 -1
- notionary/{converters/elements → elements}/callout_element.py +2 -2
- notionary/{converters/elements → elements}/code_block_element.py +1 -1
- notionary/{converters/elements → elements}/column_element.py +1 -1
- notionary/{converters/elements → elements}/divider_element.py +1 -1
- notionary/{converters/elements → elements}/embed_element.py +1 -1
- notionary/{converters/elements → elements}/heading_element.py +2 -2
- notionary/{converters/elements → elements}/image_element.py +1 -1
- notionary/{converters/elements → elements}/list_element.py +2 -2
- notionary/elements/mention_element.py +135 -0
- notionary/{converters/elements → elements}/paragraph_element.py +2 -2
- notionary/{converters/elements → elements}/qoute_element.py +1 -1
- notionary/{converters/elements → elements}/table_element.py +2 -2
- notionary/{converters/elements → elements}/todo_lists.py +2 -2
- notionary/{converters/elements → elements}/toggle_element.py +1 -1
- notionary/{converters/elements → elements}/video_element.py +1 -1
- notionary/notion_client.py +0 -1
- notionary/page/content/page_content_manager.py +4 -3
- notionary/{converters → page}/markdown_to_notion_converter.py +2 -4
- notionary/page/notion_page.py +23 -5
- notionary/page/notion_page_factory.py +1 -15
- notionary/page/notion_to_markdown_converter.py +245 -0
- {notionary-0.1.13.dist-info → notionary-0.1.14.dist-info}/METADATA +1 -1
- notionary-0.1.14.dist-info/RECORD +56 -0
- notionary/converters/__init__.py +0 -50
- notionary/converters/notion_to_markdown_converter.py +0 -45
- notionary/converters/registry/block_element_registry_builder.py +0 -284
- notionary-0.1.13.dist-info/RECORD +0 -56
- /notionary/{converters/elements → elements}/notion_block_element.py +0 -0
- /notionary/{converters/elements → elements}/text_inline_formatter.py +0 -0
- {notionary-0.1.13.dist-info → notionary-0.1.14.dist-info}/WHEEL +0 -0
- {notionary-0.1.13.dist-info → notionary-0.1.14.dist-info}/licenses/LICENSE +0 -0
- {notionary-0.1.13.dist-info → notionary-0.1.14.dist-info}/top_level.txt +0 -0
@@ -1,284 +0,0 @@
|
|
1
|
-
from typing import List, Type
|
2
|
-
from collections import OrderedDict
|
3
|
-
|
4
|
-
from notionary.converters.elements.audio_element import AudioElement
|
5
|
-
from notionary.converters.elements.embed_element import EmbedElement
|
6
|
-
from notionary.converters.elements.notion_block_element import NotionBlockElement
|
7
|
-
from notionary.converters.registry.block_element_registry import (
|
8
|
-
BlockElementRegistry,
|
9
|
-
)
|
10
|
-
|
11
|
-
from notionary.converters.elements.paragraph_element import ParagraphElement
|
12
|
-
from notionary.converters.elements.heading_element import HeadingElement
|
13
|
-
from notionary.converters.elements.callout_element import CalloutElement
|
14
|
-
from notionary.converters.elements.code_block_element import CodeBlockElement
|
15
|
-
from notionary.converters.elements.divider_element import DividerElement
|
16
|
-
from notionary.converters.elements.table_element import TableElement
|
17
|
-
from notionary.converters.elements.todo_lists import TodoElement
|
18
|
-
from notionary.converters.elements.list_element import (
|
19
|
-
BulletedListElement,
|
20
|
-
NumberedListElement,
|
21
|
-
)
|
22
|
-
from notionary.converters.elements.qoute_element import QuoteElement
|
23
|
-
from notionary.converters.elements.image_element import ImageElement
|
24
|
-
from notionary.converters.elements.video_element import VideoElement
|
25
|
-
from notionary.converters.elements.toggle_element import ToggleElement
|
26
|
-
from notionary.converters.elements.bookmark_element import BookmarkElement
|
27
|
-
from notionary.converters.elements.column_element import ColumnElement
|
28
|
-
|
29
|
-
|
30
|
-
class BlockElementRegistryBuilder:
|
31
|
-
"""
|
32
|
-
True builder for constructing BlockElementRegistry instances.
|
33
|
-
|
34
|
-
This builder allows for incremental construction of registry instances
|
35
|
-
with specific configurations of block elements.
|
36
|
-
"""
|
37
|
-
|
38
|
-
def __init__(self):
|
39
|
-
"""Initialize a new builder with an empty element list."""
|
40
|
-
# Use OrderedDict to maintain insertion order while ensuring uniqueness
|
41
|
-
self._elements = OrderedDict()
|
42
|
-
|
43
|
-
# Profile methods - create a base configuration
|
44
|
-
|
45
|
-
@classmethod
|
46
|
-
def start_empty(cls) -> "BlockElementRegistryBuilder":
|
47
|
-
"""
|
48
|
-
Start with a completely empty registry builder.
|
49
|
-
|
50
|
-
Returns:
|
51
|
-
A new builder instance with no elements
|
52
|
-
"""
|
53
|
-
return cls()
|
54
|
-
|
55
|
-
@classmethod
|
56
|
-
def start_minimal(cls) -> "BlockElementRegistryBuilder":
|
57
|
-
"""
|
58
|
-
Start with a minimal set of essential elements.
|
59
|
-
|
60
|
-
Returns:
|
61
|
-
A new builder instance with basic elements
|
62
|
-
"""
|
63
|
-
builder = cls()
|
64
|
-
return (
|
65
|
-
builder.add_element(HeadingElement)
|
66
|
-
.add_element(BulletedListElement)
|
67
|
-
.add_element(NumberedListElement)
|
68
|
-
.add_element(ParagraphElement)
|
69
|
-
) # Add paragraph last as fallback
|
70
|
-
|
71
|
-
@classmethod
|
72
|
-
def start_standard(cls) -> "BlockElementRegistryBuilder":
|
73
|
-
"""
|
74
|
-
Start with all standard elements in recommended order.
|
75
|
-
|
76
|
-
Returns:
|
77
|
-
A new builder instance with all standard elements
|
78
|
-
"""
|
79
|
-
builder = cls()
|
80
|
-
return (
|
81
|
-
builder.add_element(HeadingElement)
|
82
|
-
.add_element(CalloutElement)
|
83
|
-
.add_element(CodeBlockElement)
|
84
|
-
.add_element(DividerElement)
|
85
|
-
.add_element(TableElement)
|
86
|
-
.add_element(ColumnElement)
|
87
|
-
.add_element(BulletedListElement)
|
88
|
-
.add_element(NumberedListElement)
|
89
|
-
.add_element(ToggleElement)
|
90
|
-
.add_element(QuoteElement)
|
91
|
-
.add_element(TodoElement)
|
92
|
-
.add_element(BookmarkElement)
|
93
|
-
.add_element(ImageElement)
|
94
|
-
.add_element(VideoElement)
|
95
|
-
.add_element(EmbedElement)
|
96
|
-
.add_element(AudioElement)
|
97
|
-
.add_element(ParagraphElement)
|
98
|
-
) # Add paragraph last as fallback
|
99
|
-
|
100
|
-
# Element manipulation methods
|
101
|
-
|
102
|
-
def add_element(
|
103
|
-
self, element_class: Type[NotionBlockElement]
|
104
|
-
) -> "BlockElementRegistryBuilder":
|
105
|
-
"""
|
106
|
-
Add an element class to the registry configuration.
|
107
|
-
If the element already exists, it's moved to the end.
|
108
|
-
|
109
|
-
Args:
|
110
|
-
element_class: The element class to add
|
111
|
-
|
112
|
-
Returns:
|
113
|
-
Self for method chaining
|
114
|
-
"""
|
115
|
-
# Remove if exists (to update the order) and add to the end
|
116
|
-
self._elements.pop(element_class.__name__, None)
|
117
|
-
self._elements[element_class.__name__] = element_class
|
118
|
-
return self
|
119
|
-
|
120
|
-
def add_elements(
|
121
|
-
self, element_classes: List[Type[NotionBlockElement]]
|
122
|
-
) -> "BlockElementRegistryBuilder":
|
123
|
-
"""
|
124
|
-
Add multiple element classes to the registry configuration.
|
125
|
-
|
126
|
-
Args:
|
127
|
-
element_classes: List of element classes to add
|
128
|
-
|
129
|
-
Returns:
|
130
|
-
Self for method chaining
|
131
|
-
"""
|
132
|
-
for element_class in element_classes:
|
133
|
-
self.add_element(element_class)
|
134
|
-
return self
|
135
|
-
|
136
|
-
def remove_element(
|
137
|
-
self, element_class: Type[NotionBlockElement]
|
138
|
-
) -> "BlockElementRegistryBuilder":
|
139
|
-
"""
|
140
|
-
Remove an element class from the registry configuration.
|
141
|
-
|
142
|
-
Args:
|
143
|
-
element_class: The element class to remove
|
144
|
-
|
145
|
-
Returns:
|
146
|
-
Self for method chaining
|
147
|
-
"""
|
148
|
-
self._elements.pop(element_class.__name__, None)
|
149
|
-
return self
|
150
|
-
|
151
|
-
def move_element_to_end(
|
152
|
-
self, element_class: Type[NotionBlockElement]
|
153
|
-
) -> "BlockElementRegistryBuilder":
|
154
|
-
"""
|
155
|
-
Move an existing element to the end of the registry.
|
156
|
-
If the element doesn't exist, it will be added.
|
157
|
-
|
158
|
-
Args:
|
159
|
-
element_class: The element class to move
|
160
|
-
|
161
|
-
Returns:
|
162
|
-
Self for method chaining
|
163
|
-
"""
|
164
|
-
return self.add_element(element_class) # add_element already handles this logic
|
165
|
-
|
166
|
-
def ensure_paragraph_at_end(self) -> "BlockElementRegistryBuilder":
|
167
|
-
"""
|
168
|
-
Ensure ParagraphElement is the last element in the registry.
|
169
|
-
If it doesn't exist, it will be added.
|
170
|
-
|
171
|
-
Returns:
|
172
|
-
Self for method chaining
|
173
|
-
"""
|
174
|
-
return self.move_element_to_end(ParagraphElement)
|
175
|
-
|
176
|
-
# Specialized configuration methods
|
177
|
-
|
178
|
-
def with_list_support(self) -> "BlockElementRegistryBuilder":
|
179
|
-
"""
|
180
|
-
Add support for list elements.
|
181
|
-
|
182
|
-
Returns:
|
183
|
-
Self for method chaining
|
184
|
-
"""
|
185
|
-
return self.add_element(BulletedListElement).add_element(NumberedListElement)
|
186
|
-
|
187
|
-
def with_code_support(self) -> "BlockElementRegistryBuilder":
|
188
|
-
"""
|
189
|
-
Add support for code blocks.
|
190
|
-
|
191
|
-
Returns:
|
192
|
-
Self for method chaining
|
193
|
-
"""
|
194
|
-
return self.add_element(CodeBlockElement)
|
195
|
-
|
196
|
-
def with_table_support(self) -> "BlockElementRegistryBuilder":
|
197
|
-
"""
|
198
|
-
Add support for tables.
|
199
|
-
|
200
|
-
Returns:
|
201
|
-
Self for method chaining
|
202
|
-
"""
|
203
|
-
return self.add_element(TableElement)
|
204
|
-
|
205
|
-
def with_rich_content(self) -> "BlockElementRegistryBuilder":
|
206
|
-
"""
|
207
|
-
Add support for rich content elements (callouts, toggles, etc.).
|
208
|
-
|
209
|
-
Returns:
|
210
|
-
Self for method chaining
|
211
|
-
"""
|
212
|
-
return (
|
213
|
-
self.add_element(CalloutElement)
|
214
|
-
.add_element(ToggleElement)
|
215
|
-
.add_element(QuoteElement)
|
216
|
-
)
|
217
|
-
|
218
|
-
def with_media_support(self) -> "BlockElementRegistryBuilder":
|
219
|
-
"""
|
220
|
-
Add support for media elements (images, videos).
|
221
|
-
|
222
|
-
Returns:
|
223
|
-
Self for method chaining
|
224
|
-
"""
|
225
|
-
return self.add_element(ImageElement).add_element(VideoElement)
|
226
|
-
|
227
|
-
def with_task_support(self) -> "BlockElementRegistryBuilder":
|
228
|
-
"""
|
229
|
-
Add support for task-related elements (todos).
|
230
|
-
|
231
|
-
Returns:
|
232
|
-
Self for method chaining
|
233
|
-
"""
|
234
|
-
return self.add_element(TodoElement)
|
235
|
-
|
236
|
-
def build(self) -> BlockElementRegistry:
|
237
|
-
"""
|
238
|
-
Build and return the configured BlockElementRegistry instance.
|
239
|
-
|
240
|
-
Returns:
|
241
|
-
A configured BlockElementRegistry instance
|
242
|
-
"""
|
243
|
-
registry = BlockElementRegistry()
|
244
|
-
|
245
|
-
# Add elements in the recorded order
|
246
|
-
for element_class in self._elements.values():
|
247
|
-
registry.register(element_class)
|
248
|
-
|
249
|
-
return registry
|
250
|
-
|
251
|
-
@classmethod
|
252
|
-
def create_standard_registry(cls) -> BlockElementRegistry:
|
253
|
-
"""
|
254
|
-
Factory method to directly create a standard registry.
|
255
|
-
|
256
|
-
Returns:
|
257
|
-
A fully configured registry instance
|
258
|
-
"""
|
259
|
-
return cls.start_standard().build()
|
260
|
-
|
261
|
-
@classmethod
|
262
|
-
def create_minimal_registry(cls) -> BlockElementRegistry:
|
263
|
-
"""
|
264
|
-
Factory method to directly create a minimal registry.
|
265
|
-
|
266
|
-
Returns:
|
267
|
-
A minimal registry instance
|
268
|
-
"""
|
269
|
-
return cls.start_minimal().build()
|
270
|
-
|
271
|
-
@classmethod
|
272
|
-
def create_custom_registry(
|
273
|
-
cls, element_classes: List[Type[NotionBlockElement]]
|
274
|
-
) -> BlockElementRegistry:
|
275
|
-
"""
|
276
|
-
Factory method to directly create a custom registry.
|
277
|
-
|
278
|
-
Args:
|
279
|
-
element_classes: List of element classes to register
|
280
|
-
|
281
|
-
Returns:
|
282
|
-
A custom configured registry instance
|
283
|
-
"""
|
284
|
-
return cls().add_elements(element_classes).build()
|
@@ -1,56 +0,0 @@
|
|
1
|
-
notionary/__init__.py,sha256=kG1u5pB2PCrr2aXG4B1YhVqucPqU_LG-qyw5t5Bjayw,739
|
2
|
-
notionary/notion_client.py,sha256=VdIE1TSEZTy2BhR7Hnx_McndvQYxlu-aJN_7LeDpXgY,4497
|
3
|
-
notionary/converters/__init__.py,sha256=GOUehJbe4BKHtec1MqL1YGu3AX8zFtkwSZfhYkY5-P0,1798
|
4
|
-
notionary/converters/markdown_to_notion_converter.py,sha256=xmoXpE7KqaueUHAcDt76BTDUE_tNv4QbNtgBgX_YAXk,15100
|
5
|
-
notionary/converters/notion_to_markdown_converter.py,sha256=aX2qabOI6cp3bYOfDxJtODQYBQCp_zRFlezLXjwFV9Q,1277
|
6
|
-
notionary/converters/elements/audio_element.py,sha256=jCCReh0pBKjB4Dq46XZMkKJ1ZZy0DvjgFbeQKW5VGzM,5600
|
7
|
-
notionary/converters/elements/bookmark_element.py,sha256=Ki0Tv3lpYmo6g7OKtXg9smzMtbB2C5O9Qfr6QF8goko,8588
|
8
|
-
notionary/converters/elements/callout_element.py,sha256=tUUzTrt0JXhvvvnxCdF-KPp9mVsil_6bmUBhDeeRrYg,5954
|
9
|
-
notionary/converters/elements/code_block_element.py,sha256=wZh3LXA5qsan0Z9w7SnRKWJMYrw5cT7cfHZ61RtRKM8,5184
|
10
|
-
notionary/converters/elements/column_element.py,sha256=5i6jODlsaGz5S7gJFEzTYnmf1yPyM1-8oMJvJp3EUno,10717
|
11
|
-
notionary/converters/elements/divider_element.py,sha256=6Zv15SXLFkXo6HkiQ_iXGd_FfFr3tEObXrlNiw1gE2g,2787
|
12
|
-
notionary/converters/elements/embed_element.py,sha256=PMF2th4eSjKWUqkxgb0hTvt-ZO2W5mGspMExn_UBa2U,4779
|
13
|
-
notionary/converters/elements/heading_element.py,sha256=L-VZaXO1uFnfGNWkTmtHg5YXKLncR23MVFJvwJtqSuA,2778
|
14
|
-
notionary/converters/elements/image_element.py,sha256=sz5nXZzKTBb0U6QULOMVQ4XBdAHi6yOh9-TTodz_0-Q,4856
|
15
|
-
notionary/converters/elements/list_element.py,sha256=CRp8R1Kxn01dqZNal9EaAwV2D3Z4c_sXRZ0crZ4OTOI,4868
|
16
|
-
notionary/converters/elements/notion_block_element.py,sha256=lLRBDXhBeRaRzkbvdpYpr-U9nbkd62oVtqdSe-svT4c,1746
|
17
|
-
notionary/converters/elements/paragraph_element.py,sha256=-gIZr5MD_b7akh9euQ95PsiQlhvswC2S1VFgwBXRFQQ,2756
|
18
|
-
notionary/converters/elements/qoute_element.py,sha256=3Nr62ddgr4erncdBs-xhb2OMiPhlXAKuoqu-3hefTRc,9052
|
19
|
-
notionary/converters/elements/table_element.py,sha256=7eqFMYxZUx7aG25WEp1cNSMHDkKTWwZvUVpq4dTnvHc,11244
|
20
|
-
notionary/converters/elements/text_inline_formatter.py,sha256=FE_Sq2cozpu5RVtMbnPq21gD06UjH3LMRYr3s16JKYo,10606
|
21
|
-
notionary/converters/elements/todo_lists.py,sha256=6d74O11TfCr5umQa2xrsIiUv3PB9sZoDcWdfg21M7po,4255
|
22
|
-
notionary/converters/elements/toggle_element.py,sha256=69JSanxAGPXKwpBsMtXlvW0aCn080Me4gwk_DxTxM2Q,7253
|
23
|
-
notionary/converters/elements/video_element.py,sha256=XKfZcG8m8lZ5RyQGz_GgZCGPCMY3SjcvyuRJ6P1ymMI,6042
|
24
|
-
notionary/converters/registry/block_element_registry.py,sha256=Bi1DlEdP8xloqh_YeTh1PKzOKxtS1u1W-lu8kEcXY94,8690
|
25
|
-
notionary/converters/registry/block_element_registry_builder.py,sha256=UMJNE3bVMNqwTeA5pvNf-_gxYzIuUX1AOy1sYQXlBs4,9367
|
26
|
-
notionary/database/database_discovery.py,sha256=qDGFhXG9s-_6CXdRg8tMiwX4dvX7jLjgAUFPSNlYtlI,4506
|
27
|
-
notionary/database/database_info_service.py,sha256=Ig6gx8jUSPYORJvfgEV5kV6t72pZQsWU8HPMqd43B-o,1336
|
28
|
-
notionary/database/notion_database.py,sha256=RY5MlXNE5DVNWLC_Derljsz87ZMHkE-05Vgm80kvLxg,7250
|
29
|
-
notionary/database/notion_database_factory.py,sha256=Af57yaUHidD8TKJ8uyXOc2nnqHm7on6VGFdDRjxiq9o,6692
|
30
|
-
notionary/database/models/page_result.py,sha256=Vmm5_oYpYAkIIJVoTd1ZZGloeC3cmFLMYP255mAmtaw,233
|
31
|
-
notionary/exceptions/database_exceptions.py,sha256=I-Tx6bYRLpi5pjGPtbT-Mqxvz3BFgYTiuZxknJeLxtI,2638
|
32
|
-
notionary/exceptions/page_creation_exception.py,sha256=4v7IuZD6GsQLrqhDLriGjuG3ML638gAO53zDCrLePuU,281
|
33
|
-
notionary/page/notion_page.py,sha256=u5lPCteJ5Bz89N40TlwF2cHjHAMmwYOi2NHMo5neJZU,17003
|
34
|
-
notionary/page/notion_page_factory.py,sha256=ucTrAaXvlD4pzfqRXfhygldfD8MLx4n23XpsWESXEr4,8466
|
35
|
-
notionary/page/content/notion_page_content_chunker.py,sha256=xRks74Dqec-De6-AVTxMPnXs-MSJBzSm1HfJfaHiKr8,3330
|
36
|
-
notionary/page/content/page_content_manager.py,sha256=X4p6jBJpFpOhtbiH2BOzwoAnWRLz1EDauV16QYJMW58,3942
|
37
|
-
notionary/page/metadata/metadata_editor.py,sha256=61uiw8oB25O8ePhytoJvZDetuof5sjPoM6aoHZGo4wc,4949
|
38
|
-
notionary/page/metadata/notion_icon_manager.py,sha256=ixZrWsHGVpmF05Ncy9LCt8vZlKAQHYFZW-2yI5JZZDI,1426
|
39
|
-
notionary/page/metadata/notion_page_cover_manager.py,sha256=qgQxQE-bx4oWjLFUQvpXD5GzO1Mx7w7htz1xC2BOqUg,1717
|
40
|
-
notionary/page/properites/database_property_service.py,sha256=AJuBGahbb53VQa6IGGHxBMoOgCy6vFZg08uR_eDjNUs,11570
|
41
|
-
notionary/page/properites/page_property_manager.py,sha256=Xl8Cwn8WVszqpFXT_NvASkmP5igpCTEgRVhG_F45424,6914
|
42
|
-
notionary/page/properites/property_formatter.py,sha256=d_Nr5XQxgjB6VIS0u3ey14MOUKY416o_BvdXjbkUNAQ,3667
|
43
|
-
notionary/page/properites/property_operation_result.py,sha256=PhxHJJxxG2BdDl7aswhWnMSmf9RQtoinKkRHDoqxwCs,3913
|
44
|
-
notionary/page/properites/property_value_extractor.py,sha256=1BfyCYrFzfIUmNTozavrLTjG--6P6Dy2tkewf6rHHwQ,2353
|
45
|
-
notionary/page/relations/notion_page_relation_manager.py,sha256=D7JZJLXjX2Jn3CIseJxoMK9qL9gp88t4NmL9Ihu06eg,12682
|
46
|
-
notionary/page/relations/notion_page_title_resolver.py,sha256=jUYsEkfyDgdh77oh2awYEB5g1vQqLBq6xYSXL-4uPH8,1722
|
47
|
-
notionary/page/relations/page_database_relation.py,sha256=F9aGXFjjL8ZLNbfTGeGm_QAyXhz2AEOw7GgDLdprEcE,2313
|
48
|
-
notionary/page/relations/relation_operation_result.py,sha256=NDxBzGntOxc_89ti-HG8xDSqfY6PwyGHKHrrKbCzNjM,5010
|
49
|
-
notionary/util/logging_mixin.py,sha256=fKsx9t90bwvL74ZX3dU-sXdC4TZCQyO6qU9I8txkw_U,1369
|
50
|
-
notionary/util/page_id_utils.py,sha256=EYNMxgf-7ghzL5K8lKZBZfW7g5CsdY0Xuj4IYmU8RPk,1381
|
51
|
-
notionary/util/singleton_decorator.py,sha256=GTNMfIlVNRUVMw_c88xqd12-DcqZJjmyidN54yqiNVw,472
|
52
|
-
notionary-0.1.13.dist-info/licenses/LICENSE,sha256=zOm3cRT1qD49eg7vgw95MI79rpUAZa1kRBFwL2FkAr8,1120
|
53
|
-
notionary-0.1.13.dist-info/METADATA,sha256=oVy9WSKlRNiV1Hg_hnf8z4ZfZgo-bBl6qaF0S6zX0Z4,6154
|
54
|
-
notionary-0.1.13.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
55
|
-
notionary-0.1.13.dist-info/top_level.txt,sha256=fhONa6BMHQXqthx5PanWGbPL0b8rdFqhrJKVLf_adSs,10
|
56
|
-
notionary-0.1.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|