julee 0.1.3__py3-none-any.whl → 0.1.4__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.
- julee/api/tests/routers/test_documents.py +6 -6
- julee/docs/sphinx_hcd/__init__.py +4 -10
- julee/docs/sphinx_hcd/accelerators.py +277 -180
- julee/docs/sphinx_hcd/apps.py +78 -59
- julee/docs/sphinx_hcd/config.py +16 -16
- julee/docs/sphinx_hcd/epics.py +47 -42
- julee/docs/sphinx_hcd/integrations.py +53 -49
- julee/docs/sphinx_hcd/journeys.py +124 -110
- julee/docs/sphinx_hcd/personas.py +75 -53
- julee/docs/sphinx_hcd/stories.py +99 -71
- julee/docs/sphinx_hcd/utils.py +23 -18
- julee/domain/models/document/document.py +12 -21
- julee/domain/models/document/tests/test_document.py +14 -34
- julee/domain/use_cases/extract_assemble_data.py +1 -1
- julee/domain/use_cases/initialize_system_data.py +75 -21
- julee/fixtures/documents.yaml +4 -43
- julee/fixtures/knowledge_service_queries.yaml +9 -0
- julee/maintenance/release.py +85 -30
- julee/repositories/memory/document.py +19 -13
- julee/repositories/memory/tests/test_document.py +18 -18
- julee/repositories/minio/document.py +25 -22
- julee/repositories/minio/tests/test_document.py +16 -16
- {julee-0.1.3.dist-info → julee-0.1.4.dist-info}/METADATA +2 -3
- {julee-0.1.3.dist-info → julee-0.1.4.dist-info}/RECORD +27 -28
- julee/fixtures/assembly_specifications.yaml +0 -70
- {julee-0.1.3.dist-info → julee-0.1.4.dist-info}/WHEEL +0 -0
- {julee-0.1.3.dist-info → julee-0.1.4.dist-info}/licenses/LICENSE +0 -0
- {julee-0.1.3.dist-info → julee-0.1.4.dist-info}/top_level.txt +0 -0
|
@@ -3,7 +3,7 @@ Unit tests for MemoryDocumentRepository.
|
|
|
3
3
|
|
|
4
4
|
These tests verify the memory implementation logic without requiring external
|
|
5
5
|
dependencies. They follow the Clean Architecture testing patterns and verify
|
|
6
|
-
idempotency, error handling, and content operations including
|
|
6
|
+
idempotency, error handling, and content operations including content_bytes.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import io
|
|
@@ -46,16 +46,16 @@ def sample_document(sample_content: ContentStream) -> Document:
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
class
|
|
50
|
-
"""Test
|
|
49
|
+
class TestMemoryDocumentRepositoryContentBytes:
|
|
50
|
+
"""Test content_bytes functionality."""
|
|
51
51
|
|
|
52
|
-
async def
|
|
52
|
+
async def test_save_document_with_content_bytes(
|
|
53
53
|
self, repository: MemoryDocumentRepository
|
|
54
54
|
) -> None:
|
|
55
|
-
"""Test saving document with
|
|
55
|
+
"""Test saving document with content_bytes."""
|
|
56
56
|
content = '{"assembled": "document", "data": "test"}'
|
|
57
57
|
|
|
58
|
-
# Create document with
|
|
58
|
+
# Create document with content_bytes
|
|
59
59
|
document = Document(
|
|
60
60
|
document_id="test-doc-content-string",
|
|
61
61
|
original_filename="assembled.json",
|
|
@@ -63,10 +63,10 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
63
63
|
size_bytes=100, # Will be updated automatically
|
|
64
64
|
content_multihash="placeholder", # Will be updated automatically
|
|
65
65
|
status=DocumentStatus.CAPTURED,
|
|
66
|
-
|
|
66
|
+
content_bytes=content,
|
|
67
67
|
)
|
|
68
68
|
|
|
69
|
-
# Act - save should convert
|
|
69
|
+
# Act - save should convert content_bytes to ContentStream
|
|
70
70
|
await repository.save(document)
|
|
71
71
|
|
|
72
72
|
# Assert document was saved successfully
|
|
@@ -80,10 +80,10 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
80
80
|
retrieved_content = retrieved.content.read().decode("utf-8")
|
|
81
81
|
assert retrieved_content == content
|
|
82
82
|
|
|
83
|
-
async def
|
|
83
|
+
async def test_save_document_with_content_bytes_unicode(
|
|
84
84
|
self, repository: MemoryDocumentRepository
|
|
85
85
|
) -> None:
|
|
86
|
-
"""Test saving document with unicode
|
|
86
|
+
"""Test saving document with unicode content_bytes."""
|
|
87
87
|
content = '{"title": "测试文档", "emoji": "🚀", "content": "éñ"}'
|
|
88
88
|
|
|
89
89
|
document = Document(
|
|
@@ -93,7 +93,7 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
93
93
|
size_bytes=100,
|
|
94
94
|
content_multihash="placeholder",
|
|
95
95
|
status=DocumentStatus.CAPTURED,
|
|
96
|
-
|
|
96
|
+
content_bytes=content,
|
|
97
97
|
)
|
|
98
98
|
|
|
99
99
|
await repository.save(document)
|
|
@@ -107,10 +107,10 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
107
107
|
# Note: Empty content test removed because domain model requires
|
|
108
108
|
# size_bytes > 0
|
|
109
109
|
|
|
110
|
-
async def
|
|
110
|
+
async def test_save_excludes_content_bytes_from_storage(
|
|
111
111
|
self, repository: MemoryDocumentRepository
|
|
112
112
|
) -> None:
|
|
113
|
-
"""Test that
|
|
113
|
+
"""Test that content_bytes is not stored in memory storage."""
|
|
114
114
|
content = '{"test": "data that should not be in storage"}'
|
|
115
115
|
|
|
116
116
|
document = Document(
|
|
@@ -120,7 +120,7 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
120
120
|
size_bytes=100,
|
|
121
121
|
content_multihash="placeholder",
|
|
122
122
|
status=DocumentStatus.CAPTURED,
|
|
123
|
-
|
|
123
|
+
content_bytes=content,
|
|
124
124
|
)
|
|
125
125
|
|
|
126
126
|
await repository.save(document)
|
|
@@ -129,8 +129,8 @@ class TestMemoryDocumentRepositoryContentString:
|
|
|
129
129
|
stored_document = repository.storage_dict.get("test-storage-exclusion")
|
|
130
130
|
assert stored_document is not None
|
|
131
131
|
|
|
132
|
-
# Verify
|
|
133
|
-
assert stored_document.
|
|
132
|
+
# Verify content_bytes is not in stored document
|
|
133
|
+
assert stored_document.content_bytes is None
|
|
134
134
|
|
|
135
135
|
# Verify essential fields are still present
|
|
136
136
|
assert stored_document.document_id == "test-storage-exclusion"
|
|
@@ -195,7 +195,7 @@ class TestMemoryDocumentRepositoryErrorHandling:
|
|
|
195
195
|
size_bytes=100,
|
|
196
196
|
content_multihash="test_hash",
|
|
197
197
|
status=DocumentStatus.CAPTURED,
|
|
198
|
-
|
|
198
|
+
content_bytes="test content",
|
|
199
199
|
)
|
|
200
200
|
|
|
201
201
|
async def test_save_handles_empty_filename(
|
|
@@ -210,5 +210,5 @@ class TestMemoryDocumentRepositoryErrorHandling:
|
|
|
210
210
|
size_bytes=100,
|
|
211
211
|
content_multihash="test_hash",
|
|
212
212
|
status=DocumentStatus.CAPTURED,
|
|
213
|
-
|
|
213
|
+
content_bytes="test content",
|
|
214
214
|
)
|
|
@@ -175,27 +175,7 @@ class MinioDocumentRepository(DocumentRepository, MinioRepositoryMixin):
|
|
|
175
175
|
|
|
176
176
|
try:
|
|
177
177
|
# Handle content_string conversion (only if no content provided)
|
|
178
|
-
|
|
179
|
-
# Convert content_string to ContentStream
|
|
180
|
-
assert document.content_string is not None # For MyPy
|
|
181
|
-
content_bytes = document.content_string.encode("utf-8")
|
|
182
|
-
content_stream = ContentStream(io.BytesIO(content_bytes))
|
|
183
|
-
|
|
184
|
-
# Create new document with ContentStream
|
|
185
|
-
document = document.model_copy(
|
|
186
|
-
update={
|
|
187
|
-
"content": content_stream,
|
|
188
|
-
"size_bytes": len(content_bytes),
|
|
189
|
-
}
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
self.logger.debug(
|
|
193
|
-
"Converted content_string to ContentStream",
|
|
194
|
-
extra={
|
|
195
|
-
"document_id": document.document_id,
|
|
196
|
-
"content_length": len(content_bytes),
|
|
197
|
-
},
|
|
198
|
-
)
|
|
178
|
+
document = self._normalize_document_content(document)
|
|
199
179
|
|
|
200
180
|
# Store content first and get calculated multihash
|
|
201
181
|
calculated_multihash = await self._store_content(document)
|
|
@@ -449,6 +429,29 @@ class MinioDocumentRepository(DocumentRepository, MinioRepositoryMixin):
|
|
|
449
429
|
)
|
|
450
430
|
raise
|
|
451
431
|
|
|
432
|
+
def _normalize_document_content(self, document: Document) -> Document:
|
|
433
|
+
"""Ensure document has a ContentStream in content"""
|
|
434
|
+
if document.content is not None:
|
|
435
|
+
return document
|
|
436
|
+
|
|
437
|
+
content_bytes = document.content_bytes
|
|
438
|
+
if content_bytes is not None:
|
|
439
|
+
if isinstance(content_bytes, str):
|
|
440
|
+
content_bytes = content_bytes.encode("utf-8")
|
|
441
|
+
|
|
442
|
+
stream = ContentStream(io.BytesIO(content_bytes))
|
|
443
|
+
size_bytes = len(content_bytes)
|
|
444
|
+
return document.model_copy(
|
|
445
|
+
update={
|
|
446
|
+
"content": stream,
|
|
447
|
+
"size_bytes": size_bytes,
|
|
448
|
+
}
|
|
449
|
+
)
|
|
450
|
+
|
|
451
|
+
raise ValueError(
|
|
452
|
+
f"Document {document.document_id} has no content, content_bytes"
|
|
453
|
+
)
|
|
454
|
+
|
|
452
455
|
def _calculate_multihash_from_stream(self, content_stream: ContentStream) -> str:
|
|
453
456
|
"""Calculate multihash from content stream."""
|
|
454
457
|
if not content_stream:
|
|
@@ -471,7 +474,7 @@ class MinioDocumentRepository(DocumentRepository, MinioRepositoryMixin):
|
|
|
471
474
|
|
|
472
475
|
# Serialize metadata (content stream and content_string excluded)
|
|
473
476
|
metadata_json = document.model_dump_json(
|
|
474
|
-
exclude={"content", "content_string"}
|
|
477
|
+
exclude={"content", "content_string", "content_bytes"}
|
|
475
478
|
).encode("utf-8")
|
|
476
479
|
|
|
477
480
|
try:
|
|
@@ -429,16 +429,16 @@ class TestMinioDocumentRepositoryMultihash:
|
|
|
429
429
|
assert len(multihash_result) > 0
|
|
430
430
|
|
|
431
431
|
|
|
432
|
-
class
|
|
433
|
-
"""Test
|
|
432
|
+
class TestMinioDocumentRepositoryContentBytes:
|
|
433
|
+
"""Test content_bytes functionality."""
|
|
434
434
|
|
|
435
|
-
async def
|
|
435
|
+
async def test_save_document_with_content_bytes(
|
|
436
436
|
self, repository: MinioDocumentRepository
|
|
437
437
|
) -> None:
|
|
438
|
-
"""Test saving document with
|
|
438
|
+
"""Test saving document with content_bytes (small content)."""
|
|
439
439
|
content = '{"assembled": "document", "data": "test"}'
|
|
440
440
|
|
|
441
|
-
# Create document with
|
|
441
|
+
# Create document with content_bytes
|
|
442
442
|
document = Document(
|
|
443
443
|
document_id="test-doc-content-string",
|
|
444
444
|
original_filename="assembled.json",
|
|
@@ -446,27 +446,27 @@ class TestMinioDocumentRepositoryContentString:
|
|
|
446
446
|
size_bytes=100, # Will be updated automatically
|
|
447
447
|
content_multihash="placeholder", # Will be updated automatically
|
|
448
448
|
status=DocumentStatus.CAPTURED,
|
|
449
|
-
|
|
449
|
+
content_bytes=content,
|
|
450
450
|
)
|
|
451
451
|
|
|
452
|
-
# Act - save should convert
|
|
452
|
+
# Act - save should convert content_bytes to ContentStream
|
|
453
453
|
await repository.save(document)
|
|
454
454
|
|
|
455
455
|
# Assert document was saved successfully
|
|
456
456
|
retrieved = await repository.get(document.document_id)
|
|
457
457
|
assert retrieved is not None
|
|
458
458
|
assert retrieved.content_multihash != "placeholder" # Hash was calculated
|
|
459
|
-
assert retrieved.size_bytes == len(content
|
|
459
|
+
assert retrieved.size_bytes == len(content)
|
|
460
460
|
|
|
461
461
|
# Verify content can be read
|
|
462
462
|
assert retrieved.content is not None
|
|
463
463
|
retrieved_content = retrieved.content.read().decode("utf-8")
|
|
464
464
|
assert retrieved_content == content
|
|
465
465
|
|
|
466
|
-
async def
|
|
466
|
+
async def test_save_document_with_content_bytes_unicode(
|
|
467
467
|
self, repository: MinioDocumentRepository
|
|
468
468
|
) -> None:
|
|
469
|
-
"""Test saving document with unicode
|
|
469
|
+
"""Test saving document with unicode content_bytes."""
|
|
470
470
|
content = '{"title": "测试文档", "emoji": "🚀", "content": "éñ"}'
|
|
471
471
|
|
|
472
472
|
document = Document(
|
|
@@ -476,7 +476,7 @@ class TestMinioDocumentRepositoryContentString:
|
|
|
476
476
|
size_bytes=100,
|
|
477
477
|
content_multihash="placeholder",
|
|
478
478
|
status=DocumentStatus.CAPTURED,
|
|
479
|
-
|
|
479
|
+
content_bytes=content,
|
|
480
480
|
)
|
|
481
481
|
|
|
482
482
|
await repository.save(document)
|
|
@@ -490,12 +490,12 @@ class TestMinioDocumentRepositoryContentString:
|
|
|
490
490
|
# Note: Empty content test removed because domain model requires
|
|
491
491
|
# size_bytes > 0
|
|
492
492
|
|
|
493
|
-
async def
|
|
493
|
+
async def test_save_excludes_content_bytes_from_metadata(
|
|
494
494
|
self,
|
|
495
495
|
repository: MinioDocumentRepository,
|
|
496
496
|
fake_minio_client: FakeMinioClient,
|
|
497
497
|
) -> None:
|
|
498
|
-
"""Test that
|
|
498
|
+
"""Test that content_bytes is not stored in metadata."""
|
|
499
499
|
content = '{"test": "data that should not be in metadata"}'
|
|
500
500
|
|
|
501
501
|
document = Document(
|
|
@@ -505,7 +505,7 @@ class TestMinioDocumentRepositoryContentString:
|
|
|
505
505
|
size_bytes=100,
|
|
506
506
|
content_multihash="placeholder",
|
|
507
507
|
status=DocumentStatus.CAPTURED,
|
|
508
|
-
|
|
508
|
+
content_bytes=content,
|
|
509
509
|
)
|
|
510
510
|
|
|
511
511
|
await repository.save(document)
|
|
@@ -521,8 +521,8 @@ class TestMinioDocumentRepositoryContentString:
|
|
|
521
521
|
|
|
522
522
|
metadata_dict = json.loads(metadata_json)
|
|
523
523
|
|
|
524
|
-
# Verify
|
|
525
|
-
assert "
|
|
524
|
+
# Verify content_bytes is not in stored metadata
|
|
525
|
+
assert "content_bytes" not in metadata_dict
|
|
526
526
|
assert "content" not in metadata_dict
|
|
527
527
|
|
|
528
528
|
# Verify essential fields are still present
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: julee
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Julee - Clean architecture for accountable and transparent digital supply chains
|
|
5
5
|
Author-email: Pyx Industries <chris@pyx.io>
|
|
6
6
|
License: GPL-3.0
|
|
@@ -13,11 +13,10 @@ Classifier: Development Status :: 3 - Alpha
|
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
-
Requires-Python: >=3.
|
|
19
|
+
Requires-Python: >=3.11
|
|
21
20
|
Description-Content-Type: text/markdown
|
|
22
21
|
License-File: LICENSE
|
|
23
22
|
Requires-Dist: fastapi>=0.100.0
|
|
@@ -20,7 +20,7 @@ julee/api/tests/test_dependencies.py,sha256=BpMGWilh9wbWW4aYuu_Agw7LL7YjfLVGqnIo
|
|
|
20
20
|
julee/api/tests/test_requests.py,sha256=JxiSL38VDoo-6pdoWy9iJrXWbTJa18enoN5jI79COcE,9877
|
|
21
21
|
julee/api/tests/routers/__init__.py,sha256=IawydYDi3sIBEPE6vyX8r_UBxUKc6NDh_UFL2kqdbqM,634
|
|
22
22
|
julee/api/tests/routers/test_assembly_specifications.py,sha256=3puq2f4l1OwLxEBbzstNaJ6e-t3iKABsrIlI29i0okQ,27462
|
|
23
|
-
julee/api/tests/routers/test_documents.py,sha256=
|
|
23
|
+
julee/api/tests/routers/test_documents.py,sha256=6LlFvwRUJOqkPv1f7laRVzMz7k5VmH5J7xi-tqE9bw8,10720
|
|
24
24
|
julee/api/tests/routers/test_knowledge_service_configs.py,sha256=EO2Ngfrd0oQvUKVrbxQ7T5lvfG5eBXcfQ9NDvsJks3g,7848
|
|
25
25
|
julee/api/tests/routers/test_knowledge_service_queries.py,sha256=m-uqPQQQxX0cEx3NVNt-xdgjjSXhinAGZnJVZQIrFK0,26191
|
|
26
26
|
julee/api/tests/routers/test_system.py,sha256=xoOdf0Lt8PO212x4GpM8B5gAyTFbjdjcg5q8sHbC1cA,6287
|
|
@@ -49,16 +49,16 @@ julee/contrib/polling/tests/unit/infrastructure/services/polling/__init__.py,sha
|
|
|
49
49
|
julee/contrib/polling/tests/unit/infrastructure/services/polling/http/__init__.py,sha256=OVMmGLJ7KEmvKeoDakizgFXSi-Z4QvHFh4B0CINbGSM,283
|
|
50
50
|
julee/contrib/polling/tests/unit/infrastructure/services/polling/http/test_http_poller_service.py,sha256=4B-CTyeHVYRAv-TmG9igSk_ifQeZNYNDeF8uPRz-bHk,6212
|
|
51
51
|
julee/docs/__init__.py,sha256=wknBFq8RF9S1M-oU-S1sw3UWQsmZSjq5Oj7HCCh1AHg,169
|
|
52
|
-
julee/docs/sphinx_hcd/__init__.py,sha256=
|
|
53
|
-
julee/docs/sphinx_hcd/accelerators.py,sha256=
|
|
54
|
-
julee/docs/sphinx_hcd/apps.py,sha256=
|
|
55
|
-
julee/docs/sphinx_hcd/config.py,sha256=
|
|
56
|
-
julee/docs/sphinx_hcd/epics.py,sha256=
|
|
57
|
-
julee/docs/sphinx_hcd/integrations.py,sha256=
|
|
58
|
-
julee/docs/sphinx_hcd/journeys.py,sha256=
|
|
59
|
-
julee/docs/sphinx_hcd/personas.py,sha256=
|
|
60
|
-
julee/docs/sphinx_hcd/stories.py,sha256=
|
|
61
|
-
julee/docs/sphinx_hcd/utils.py,sha256=
|
|
52
|
+
julee/docs/sphinx_hcd/__init__.py,sha256=mpEbmaDGoT74LGDS9wCEakov2mzagpFvWGp6TDDJegA,2378
|
|
53
|
+
julee/docs/sphinx_hcd/accelerators.py,sha256=fNrP9ztTbNjAe0sib23RnkkEuxk3cBkb8lfMojtqz0M,38759
|
|
54
|
+
julee/docs/sphinx_hcd/apps.py,sha256=lNHVJrF-OQ4c6VTv4MZn2b3ewcmSW3IvvgZyUD1HDwk,15974
|
|
55
|
+
julee/docs/sphinx_hcd/config.py,sha256=ilxLjnrG7oLgbSSUL90biFj7xxohgij4hlEfYSjIX0A,4159
|
|
56
|
+
julee/docs/sphinx_hcd/epics.py,sha256=anZXSrvWTzD6SU1fzBioMxZccIjym0TDmppN_eOVCN8,13894
|
|
57
|
+
julee/docs/sphinx_hcd/integrations.py,sha256=3baWEph9uYMipeWrPywmeRMko8LdkQx-LFQvkVcoJ08,9796
|
|
58
|
+
julee/docs/sphinx_hcd/journeys.py,sha256=abmd9kplnsy3gB209Iq_tFOseABkPJU4MGYEAHCSjhY,26582
|
|
59
|
+
julee/docs/sphinx_hcd/personas.py,sha256=V4l6-31KgkDe-TEY0iDEe_TBI3VlFQJyZgAc6m8GKNQ,13662
|
|
60
|
+
julee/docs/sphinx_hcd/stories.py,sha256=cFiNGDlpOE6wNEjZowzlmaGc_bK6xJjzYed9aIQFZLY,32233
|
|
61
|
+
julee/docs/sphinx_hcd/utils.py,sha256=lkmyQShHWLoU6nwxs4PS5pxn_jjsRWVeAexizR46PhA,4488
|
|
62
62
|
julee/domain/__init__.py,sha256=UWEUgtMguDCCsRbTQtsdkaR8-PBei9YI9tn46FtDLe8,774
|
|
63
63
|
julee/domain/models/__init__.py,sha256=HQYop2b0QjroxFHskoX4lcuMVIFRj8jteUI-P9TTze4,1230
|
|
64
64
|
julee/domain/models/assembly/__init__.py,sha256=3bivk26_gmKFUhoUMHumsFHRrXyhgv0ClTxyBPWr9B0,494
|
|
@@ -78,10 +78,10 @@ julee/domain/models/custom_fields/content_stream.py,sha256=DRpGjMSUuUwOzbJW-_pVy
|
|
|
78
78
|
julee/domain/models/custom_fields/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
79
|
julee/domain/models/custom_fields/tests/test_custom_fields.py,sha256=1x-MH3FFgC5Ltw7tTqvvWpb1ZnsoRb7BtJ-p6EcdZuQ,1936
|
|
80
80
|
julee/domain/models/document/__init__.py,sha256=DJr8HKqB47AiJ5YIrTf3E-mpFYiKLLOZPEN8qcAJPWI,469
|
|
81
|
-
julee/domain/models/document/document.py,sha256=
|
|
81
|
+
julee/domain/models/document/document.py,sha256=DgQNP_7alH3qHIhOS77Cx_JvTxZwTLtVuMrU4N5ztAU,5079
|
|
82
82
|
julee/domain/models/document/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
83
|
julee/domain/models/document/tests/factories.py,sha256=4sgVAOXInPO-RnT4ChO4zWWB0cAF9JFwYA50j692Ir0,2457
|
|
84
|
-
julee/domain/models/document/tests/test_document.py,sha256=
|
|
84
|
+
julee/domain/models/document/tests/test_document.py,sha256=hIufVemhkA-s403xQsJsyB6mTkcq6a8M0za1pLQ_ItY,9093
|
|
85
85
|
julee/domain/models/knowledge_service_config/__init__.py,sha256=5qYB-nGcVp6CIP7V85hzsQqvBg3HAq5H_p9hPQ5YqGM,431
|
|
86
86
|
julee/domain/models/knowledge_service_config/knowledge_service_config.py,sha256=WAoFtVv60leuWu0pyZrjy46tFD89lCcEHRMshSLnuBU,2945
|
|
87
87
|
julee/domain/models/policy/__init__.py,sha256=jsmjUb1QHD8T5X1Ri_wJkAQTaRig4B997yb6_ll2uC0,283
|
|
@@ -102,38 +102,37 @@ julee/domain/repositories/knowledge_service_query.py,sha256=9qrWMLT9Xxms9Q7fMjBb
|
|
|
102
102
|
julee/domain/repositories/policy.py,sha256=-1Miwk_wmblr9QqVb4aZ_ajk9YIwPUXhxfhGG5CTuFQ,1874
|
|
103
103
|
julee/domain/use_cases/__init__.py,sha256=rKJyunXCHorEyxPfKDEYD27kese53e5spCfFTbDxpOc,534
|
|
104
104
|
julee/domain/use_cases/decorators.py,sha256=mMlR5ws94frAZEUEjj545cZpwnTimZI6JVpMlGu3EpA,3497
|
|
105
|
-
julee/domain/use_cases/extract_assemble_data.py,sha256=
|
|
106
|
-
julee/domain/use_cases/initialize_system_data.py,sha256=
|
|
105
|
+
julee/domain/use_cases/extract_assemble_data.py,sha256=D7w63bR-3WXpwDaj2SH_L4ZO-pp4lHWV-K0--xLa7Qs,24946
|
|
106
|
+
julee/domain/use_cases/initialize_system_data.py,sha256=CIYasO96HQMKXh098Gw3r2rerPKsVXRRVLsxnSJnVfo,31330
|
|
107
107
|
julee/domain/use_cases/validate_document.py,sha256=noLzQp4hSJVAr-hL668ywxe4m7aNv2yuBMZzPgJPpIs,28219
|
|
108
108
|
julee/domain/use_cases/tests/__init__.py,sha256=xKgoU78i5zK5mlZ2NNfp8nhbnb9fIcNwCTcQD0j9gEw,199
|
|
109
109
|
julee/domain/use_cases/tests/test_extract_assemble_data.py,sha256=uNcKtzy-u7nwr68wOdDmXLdfw_2p4SA0Lm3czec9mAI,21596
|
|
110
110
|
julee/domain/use_cases/tests/test_initialize_system_data.py,sha256=6JwxQDNwknyPqtmSugKn2Eq1CA1Y8rFEb44yrN1_SCA,17918
|
|
111
111
|
julee/domain/use_cases/tests/test_validate_document.py,sha256=_VcGZK98oDzxN0iLP81hIVdjCPbgmjIJwFeBn5MuWZk,50922
|
|
112
|
-
julee/fixtures/
|
|
113
|
-
julee/fixtures/documents.yaml,sha256=nAI2ReHxoaPdPW2b4IFAWNw5N_1aHgexa_fMMWMr3lw,6389
|
|
112
|
+
julee/fixtures/documents.yaml,sha256=QMPbdMtjvsf08iFuNa4U2Kx7nTIGVpeRMlp-eeW9dY0,4918
|
|
114
113
|
julee/fixtures/knowledge_service_configs.yaml,sha256=SfJO1SJFzYtF2Y7XTZmhl3d9Eiv2-xMrHKW1kI7NhI0,1378
|
|
115
|
-
julee/fixtures/knowledge_service_queries.yaml,sha256=
|
|
114
|
+
julee/fixtures/knowledge_service_queries.yaml,sha256=uYKD24jMIBhHjGaItyDVqtRlHLVeIRCw8XfhNjiMENk,2447
|
|
116
115
|
julee/maintenance/__init__.py,sha256=tThzvZBQ4bTSiXVfLVuHI2uLQOhZRMfND1ndj26BNu0,65
|
|
117
|
-
julee/maintenance/release.py,sha256=
|
|
116
|
+
julee/maintenance/release.py,sha256=595Cs7CKSV7jsBVWHE3lZNclDievh8BVw5SP5JbrkAk,7697
|
|
118
117
|
julee/repositories/__init__.py,sha256=mJpDFYP5f4LBhavYSnC3SnTcWnozMCz7aXje4iB5pyU,571
|
|
119
118
|
julee/repositories/memory/__init__.py,sha256=w0ibQfMm3HYdFhLXXMPa_aRtbRiG60j2bqmEGdjmOtg,1225
|
|
120
119
|
julee/repositories/memory/assembly.py,sha256=1XuLtNiVKVg8jqwHxzQPJS-YmLGR0PtTiD_XhoPSUSo,2807
|
|
121
120
|
julee/repositories/memory/assembly_specification.py,sha256=pPv3nJuAdqkS3wMs220vp_4uu0OMH3EOuMwWQnk-ZNg,4234
|
|
122
121
|
julee/repositories/memory/base.py,sha256=9FSV9cIgFBfhPqZcUhprDo5QyE9YK-a1m2bnwKX04wQ,7722
|
|
123
|
-
julee/repositories/memory/document.py,sha256
|
|
122
|
+
julee/repositories/memory/document.py,sha256=-lcB37q4KIMVL9NxRBq4wq7tuyY7-h4_BI_N62fDSrA,5481
|
|
124
123
|
julee/repositories/memory/document_policy_validation.py,sha256=vjSAT6tk-V4IbWTKZjUTgTQ15YlR1MAZjbYnGprn8Wo,3715
|
|
125
124
|
julee/repositories/memory/knowledge_service_config.py,sha256=sG7bHAO2O131k7GD-8RwGrQ3VNyyEZulVIVBps57aAM,4215
|
|
126
125
|
julee/repositories/memory/knowledge_service_query.py,sha256=0rav6H4caKw-CGM4gsjcwsFba2vjLGJbg7WYg9eB7-Y,3939
|
|
127
126
|
julee/repositories/memory/policy.py,sha256=UjLCqm4V2hiF5kF2H_5IonNb4jXAQcdJ57jouMWjYns,2874
|
|
128
127
|
julee/repositories/memory/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
|
-
julee/repositories/memory/tests/test_document.py,sha256=
|
|
128
|
+
julee/repositories/memory/tests/test_document.py,sha256=Ah0pnC1CuDvjDPilM_rR1dzyCwLGjGZIioUAQJqU__o,7793
|
|
130
129
|
julee/repositories/memory/tests/test_document_policy_validation.py,sha256=NDQ0DSUA5tDM33ulmZM9fU93GMbYmj6l_9m6G_YrOwg,6210
|
|
131
130
|
julee/repositories/memory/tests/test_policy.py,sha256=EVi1Zl1mUrkGezjRQGCHQDPK4Loqapg94kAKno72yi8,15840
|
|
132
131
|
julee/repositories/minio/__init__.py,sha256=KiDxZUJ2Cvq9sD8TM2_SO50uDSsRq7g4cKTbDmYHHxI,1211
|
|
133
132
|
julee/repositories/minio/assembly.py,sha256=X3KPgzCEH8Z9kaQN2ANYughPPyF8InBV8-fSM7LSA2s,3724
|
|
134
133
|
julee/repositories/minio/assembly_specification.py,sha256=dnnxxyXteaPjWxsndoo6UIXqjiYmOKI5thMzhQP5ZWo,6393
|
|
135
134
|
julee/repositories/minio/client.py,sha256=p4NnTCL4FaQwPTrAUUyQztQVfQ2WcLubAGjQPn9Efdc,18365
|
|
136
|
-
julee/repositories/minio/document.py,sha256=
|
|
135
|
+
julee/repositories/minio/document.py,sha256=A79MT1cKoO7N9Wt3y52JuxgWlNqpNA3jPc9dqiCG60Y,20022
|
|
137
136
|
julee/repositories/minio/document_policy_validation.py,sha256=960wS15N7P1PyrBGi1QGAzcjfO01PTO-koXrrZeAoHs,4860
|
|
138
137
|
julee/repositories/minio/knowledge_service_config.py,sha256=IaZlwTXuq4F6efUckUDjKX1gSm6tzBJVQW4COQjnRFA,6714
|
|
139
138
|
julee/repositories/minio/knowledge_service_query.py,sha256=nSH-UBt_42OgWokEKwpIhLmtBf17ShFA2jf8uUaWK8A,6955
|
|
@@ -143,7 +142,7 @@ julee/repositories/minio/tests/fake_client.py,sha256=qyV6ApmVm54e3hPZganteE5n2wa
|
|
|
143
142
|
julee/repositories/minio/tests/test_assembly.py,sha256=Sj5qgDgBRZ9gWQZGTC9H81c1LuP7Klq9yi5Wrvs9WvI,13793
|
|
144
143
|
julee/repositories/minio/tests/test_assembly_specification.py,sha256=wCsd6Mbxwsiju1Pn-OQGBpCAEr-4l2wwW9niVOciUms,15240
|
|
145
144
|
julee/repositories/minio/tests/test_client_protocol.py,sha256=mLESv_xrEM2A2eRm2GLfrqeMHdrDdMAdgI-pRRF-svk,2310
|
|
146
|
-
julee/repositories/minio/tests/test_document.py,sha256=
|
|
145
|
+
julee/repositories/minio/tests/test_document.py,sha256=z806S9Fjyc5lSJQYy7JL0zfcaensqVIh50eYGfdO2OI,22177
|
|
147
146
|
julee/repositories/minio/tests/test_document_policy_validation.py,sha256=klBc_5dq421I5tN2hIwOgLsfFQ4YnsjDgPb8Ywh74cI,7542
|
|
148
147
|
julee/repositories/minio/tests/test_knowledge_service_config.py,sha256=SeDPWr0Gmxtu-ytRHTUHfxC38Aii64GvteBDunJziBg,14823
|
|
149
148
|
julee/repositories/minio/tests/test_knowledge_service_query.py,sha256=tqlS9w9MShaL83PyfQo8xjFL2Kxli6uJqLIE36qdxa8,15331
|
|
@@ -190,8 +189,8 @@ julee/util/validation/type_guards.py,sha256=sH9NfnrWAOQnLKQQNpJRdz1ygkt5nTUmKyjV
|
|
|
190
189
|
julee/workflows/__init__.py,sha256=sHXZm4EPvsch6IYcJGqGuPJIep8XZQ8XvEju5b34tTs,724
|
|
191
190
|
julee/workflows/extract_assemble.py,sha256=ZldmLdwwn1LomDJg4gNGYrnY87tiXtU8em3-l_fqLGs,7876
|
|
192
191
|
julee/workflows/validate_document.py,sha256=Cwl-XgcQWeVCC-cGOAslS1vCjQosiWUi79c2uQfTYNc,8230
|
|
193
|
-
julee-0.1.
|
|
194
|
-
julee-0.1.
|
|
195
|
-
julee-0.1.
|
|
196
|
-
julee-0.1.
|
|
197
|
-
julee-0.1.
|
|
192
|
+
julee-0.1.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
193
|
+
julee-0.1.4.dist-info/METADATA,sha256=2BMROf21mgMvdnWvHOr1YCh5Z8ZVc-llVk7ZrJdMm48,7011
|
|
194
|
+
julee-0.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
195
|
+
julee-0.1.4.dist-info/top_level.txt,sha256=woyPXhn9n-aM3oekZ341P1enrjj6nIcTwOxQL32VCLc,6
|
|
196
|
+
julee-0.1.4.dist-info/RECORD,,
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
assembly_specifications:
|
|
2
|
-
- assembly_specification_id: "meeting-minutes-assembly"
|
|
3
|
-
name: "Meeting Minutes Assembly"
|
|
4
|
-
applicability: "Meeting transcripts from video conferences or in-person meetings that need to be structured into formal meeting minutes"
|
|
5
|
-
status: "active"
|
|
6
|
-
version: "1.0"
|
|
7
|
-
jsonschema:
|
|
8
|
-
$schema: "http://json-schema.org/draft-07/schema#"
|
|
9
|
-
title: "Meeting Minutes"
|
|
10
|
-
type: "object"
|
|
11
|
-
properties:
|
|
12
|
-
meeting_info:
|
|
13
|
-
type: "object"
|
|
14
|
-
properties:
|
|
15
|
-
title:
|
|
16
|
-
type: "string"
|
|
17
|
-
date:
|
|
18
|
-
type: "string"
|
|
19
|
-
format: "date"
|
|
20
|
-
start_time:
|
|
21
|
-
type: "string"
|
|
22
|
-
end_time:
|
|
23
|
-
type: "string"
|
|
24
|
-
attendees:
|
|
25
|
-
type: "array"
|
|
26
|
-
items:
|
|
27
|
-
type: "object"
|
|
28
|
-
properties:
|
|
29
|
-
name:
|
|
30
|
-
type: "string"
|
|
31
|
-
role:
|
|
32
|
-
type: "string"
|
|
33
|
-
required: ["name", "role"]
|
|
34
|
-
required: ["title", "date", "attendees"]
|
|
35
|
-
agenda_items:
|
|
36
|
-
type: "array"
|
|
37
|
-
items:
|
|
38
|
-
type: "object"
|
|
39
|
-
properties:
|
|
40
|
-
topic:
|
|
41
|
-
type: "string"
|
|
42
|
-
discussion_points:
|
|
43
|
-
type: "array"
|
|
44
|
-
items:
|
|
45
|
-
type: "string"
|
|
46
|
-
decisions:
|
|
47
|
-
type: "array"
|
|
48
|
-
items:
|
|
49
|
-
type: "string"
|
|
50
|
-
required: ["topic"]
|
|
51
|
-
action_items:
|
|
52
|
-
type: "array"
|
|
53
|
-
items:
|
|
54
|
-
type: "object"
|
|
55
|
-
properties:
|
|
56
|
-
task:
|
|
57
|
-
type: "string"
|
|
58
|
-
assignee:
|
|
59
|
-
type: "string"
|
|
60
|
-
due_date:
|
|
61
|
-
type: "string"
|
|
62
|
-
priority:
|
|
63
|
-
type: "string"
|
|
64
|
-
enum: ["low", "medium", "high"]
|
|
65
|
-
required: ["task", "assignee"]
|
|
66
|
-
required: ["meeting_info", "agenda_items"]
|
|
67
|
-
knowledge_service_queries:
|
|
68
|
-
"/properties/meeting_info": "extract-meeting-info-query"
|
|
69
|
-
"/properties/agenda_items": "extract-agenda-items-query"
|
|
70
|
-
"/properties/action_items": "extract-action-items-query"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|