julee 0.1.3__tar.gz → 0.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- julee-0.1.5/PKG-INFO +103 -0
- julee-0.1.5/README.md +38 -0
- {julee-0.1.3 → julee-0.1.5}/pyproject.toml +13 -3
- {julee-0.1.3 → julee-0.1.5}/src/julee/__init__.py +1 -1
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_assembly_specifications.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_documents.py +8 -6
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_knowledge_service_configs.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_knowledge_service_queries.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_system.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/test_workflows.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/test_app.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/test_dependencies.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/test_requests.py +2 -0
- julee-0.1.5/src/julee/contrib/polling/__init__.py +50 -0
- julee-0.1.5/src/julee/contrib/polling/apps/__init__.py +17 -0
- julee-0.1.5/src/julee/contrib/polling/apps/worker/__init__.py +17 -0
- julee-0.1.5/src/julee/contrib/polling/apps/worker/pipelines.py +288 -0
- julee-0.1.5/src/julee/contrib/polling/domain/__init__.py +15 -0
- julee-0.1.5/src/julee/contrib/polling/domain/models/__init__.py +12 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/domain/models/polling_config.py +18 -1
- julee-0.1.5/src/julee/contrib/polling/domain/services/__init__.py +12 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/domain/services/poller.py +1 -1
- julee-0.1.5/src/julee/contrib/polling/infrastructure/__init__.py +16 -0
- julee-0.1.5/src/julee/contrib/polling/infrastructure/services/__init__.py +13 -0
- julee-0.1.5/src/julee/contrib/polling/infrastructure/services/polling/__init__.py +13 -0
- julee-0.1.5/src/julee/contrib/polling/infrastructure/services/polling/http/__init__.py +13 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/infrastructure/services/polling/http/http_poller_service.py +5 -2
- julee-0.1.5/src/julee/contrib/polling/infrastructure/temporal/__init__.py +20 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/infrastructure/temporal/activities.py +1 -1
- julee-0.1.5/src/julee/contrib/polling/infrastructure/temporal/manager.py +291 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/infrastructure/temporal/proxies.py +1 -1
- julee-0.1.5/src/julee/contrib/polling/tests/unit/apps/worker/test_pipelines.py +580 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/infrastructure/services/polling/http/test_http_poller_service.py +40 -2
- julee-0.1.5/src/julee/contrib/polling/tests/unit/infrastructure/temporal/__init__.py +7 -0
- julee-0.1.5/src/julee/contrib/polling/tests/unit/infrastructure/temporal/test_manager.py +475 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/__init__.py +4 -10
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/accelerators.py +277 -180
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/apps.py +78 -59
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/config.py +16 -16
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/epics.py +47 -42
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/integrations.py +53 -49
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/journeys.py +124 -110
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/personas.py +75 -53
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/stories.py +99 -71
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/sphinx_hcd/utils.py +23 -18
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly/tests/test_assembly.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/tests/test_assembly_specification.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/tests/test_knowledge_service_query.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/custom_fields/tests/test_custom_fields.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/document/document.py +12 -21
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/document/tests/test_document.py +16 -34
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/tests/test_document_policy_validation.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/tests/test_policy.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/extract_assemble_data.py +1 -1
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/initialize_system_data.py +75 -21
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/tests/test_extract_assemble_data.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/tests/test_initialize_system_data.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/tests/test_validate_document.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/fixtures/documents.yaml +4 -43
- {julee-0.1.3 → julee-0.1.5}/src/julee/fixtures/knowledge_service_queries.yaml +9 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/maintenance/release.py +90 -30
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/document.py +19 -13
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/tests/test_document.py +20 -18
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/tests/test_document_policy_validation.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/tests/test_policy.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/document.py +25 -22
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_assembly.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_assembly_specification.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_client_protocol.py +3 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_document.py +18 -16
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_document_policy_validation.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_knowledge_service_config.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_knowledge_service_query.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/test_policy.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/anthropic/tests/test_knowledge_service.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/memory/test_knowledge_service.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/test_factory.py +2 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/tests/test_decorators.py +2 -0
- julee-0.1.5/src/julee.egg-info/PKG-INFO +103 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee.egg-info/SOURCES.txt +7 -1
- {julee-0.1.3 → julee-0.1.5}/src/julee.egg-info/requires.txt +1 -0
- julee-0.1.3/PKG-INFO +0 -198
- julee-0.1.3/README.md +0 -133
- julee-0.1.3/src/julee/contrib/polling/__init__.py +0 -47
- julee-0.1.3/src/julee/contrib/polling/domain/__init__.py +0 -17
- julee-0.1.3/src/julee/contrib/polling/domain/models/__init__.py +0 -13
- julee-0.1.3/src/julee/contrib/polling/domain/services/__init__.py +0 -11
- julee-0.1.3/src/julee/contrib/polling/infrastructure/__init__.py +0 -15
- julee-0.1.3/src/julee/contrib/polling/infrastructure/services/__init__.py +0 -12
- julee-0.1.3/src/julee/contrib/polling/infrastructure/services/polling/__init__.py +0 -12
- julee-0.1.3/src/julee/contrib/polling/infrastructure/services/polling/http/__init__.py +0 -12
- julee-0.1.3/src/julee/contrib/polling/infrastructure/temporal/__init__.py +0 -20
- julee-0.1.3/src/julee/fixtures/assembly_specifications.yaml +0 -70
- julee-0.1.3/src/julee.egg-info/PKG-INFO +0 -198
- {julee-0.1.3 → julee-0.1.5}/LICENSE +0 -0
- {julee-0.1.3 → julee-0.1.5}/MANIFEST.in +0 -0
- {julee-0.1.3 → julee-0.1.5}/setup.cfg +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/app.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/dependencies.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/requests.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/responses.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/assembly_specifications.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/documents.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/knowledge_service_configs.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/knowledge_service_queries.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/system.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/routers/workflows.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/services/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/services/system_initialization.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/api/tests/routers/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/infrastructure/temporal/activity_names.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/infrastructure/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/infrastructure/services/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/infrastructure/services/polling/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/contrib/polling/tests/unit/infrastructure/services/polling/http/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/docs/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly/assembly.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly/tests/factories.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/assembly_specification.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/knowledge_service_query.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/assembly_specification/tests/factories.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/custom_fields/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/custom_fields/content_stream.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/custom_fields/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/document/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/document/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/document/tests/factories.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/knowledge_service_config/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/knowledge_service_config/knowledge_service_config.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/document_policy_validation.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/policy.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/models/policy/tests/factories.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/assembly.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/assembly_specification.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/base.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/document.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/document_policy_validation.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/knowledge_service_config.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/knowledge_service_query.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/repositories/policy.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/decorators.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/domain/use_cases/validate_document.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/fixtures/knowledge_service_configs.yaml +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/maintenance/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/assembly.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/assembly_specification.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/base.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/document_policy_validation.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/knowledge_service_config.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/knowledge_service_query.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/policy.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/memory/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/assembly.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/assembly_specification.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/client.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/document_policy_validation.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/knowledge_service_config.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/knowledge_service_query.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/policy.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/minio/tests/fake_client.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/temporal/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/temporal/activities.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/temporal/activity_names.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/repositories/temporal/proxies.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/anthropic/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/anthropic/knowledge_service.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/factory.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/knowledge_service.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/memory/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/knowledge_service/memory/knowledge_service.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/temporal/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/temporal/activities.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/temporal/activity_names.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/services/temporal/proxies.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/domain.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/minio/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/minio/file_storage.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/client_proxies/file_storage.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/data_converter.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/minio_file_storage.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/proxies/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repos/temporal/proxies/file_storage.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/repositories.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/temporal/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/temporal/activities.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/temporal/decorators.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/tests/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/validation/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/validation/repository.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/util/validation/type_guards.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/worker.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/workflows/__init__.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/workflows/extract_assemble.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee/workflows/validate_document.py +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee.egg-info/dependency_links.txt +0 -0
- {julee-0.1.3 → julee-0.1.5}/src/julee.egg-info/top_level.txt +0 -0
julee-0.1.5/PKG-INFO
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: julee
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: Julee - Clean architecture for accountable and transparent digital supply chains
|
|
5
|
+
Author-email: Pyx Industries <chris@pyx.io>
|
|
6
|
+
License: GPL-3.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/pyx-industries/julee
|
|
8
|
+
Project-URL: Repository, https://github.com/pyx-industries/julee
|
|
9
|
+
Project-URL: Documentation, https://github.com/pyx-industries/julee#readme
|
|
10
|
+
Project-URL: Issues, https://github.com/pyx-industries/julee/issues
|
|
11
|
+
Keywords: temporal,workflow,document-processing,ai,supply-chain
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: fastapi>=0.100.0
|
|
23
|
+
Requires-Dist: uvicorn>=0.20.0
|
|
24
|
+
Requires-Dist: python-multipart
|
|
25
|
+
Requires-Dist: fastapi-pagination>=0.12.0
|
|
26
|
+
Requires-Dist: pydantic>=2.0.0
|
|
27
|
+
Requires-Dist: temporalio[pydantic]>=1.3.0
|
|
28
|
+
Requires-Dist: minio>=7.0.0
|
|
29
|
+
Requires-Dist: anthropic>=0.66.0
|
|
30
|
+
Requires-Dist: click>=0.8.0
|
|
31
|
+
Requires-Dist: Jinja2>=3.0.0
|
|
32
|
+
Requires-Dist: PyYAML>=6.0.0
|
|
33
|
+
Requires-Dist: python-magic>=0.4.27
|
|
34
|
+
Requires-Dist: multihash>=0.1.1
|
|
35
|
+
Requires-Dist: six>=1.16.0
|
|
36
|
+
Requires-Dist: jsonschema>=4.0.0
|
|
37
|
+
Requires-Dist: jsonpointer>=3.0.0
|
|
38
|
+
Provides-Extra: dev
|
|
39
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
40
|
+
Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
|
|
43
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: factory-boy>=3.2.0; extra == "dev"
|
|
45
|
+
Requires-Dist: mypy>=1.7.0; extra == "dev"
|
|
46
|
+
Requires-Dist: types-PyYAML; extra == "dev"
|
|
47
|
+
Requires-Dist: types-jsonschema; extra == "dev"
|
|
48
|
+
Requires-Dist: types-python-dateutil; extra == "dev"
|
|
49
|
+
Requires-Dist: black>=24.0.0; extra == "dev"
|
|
50
|
+
Requires-Dist: ruff>=0.5.0; extra == "dev"
|
|
51
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
52
|
+
Requires-Dist: bandit; extra == "dev"
|
|
53
|
+
Requires-Dist: pip-tools>=7.0.0; extra == "dev"
|
|
54
|
+
Requires-Dist: asyncpg; extra == "dev"
|
|
55
|
+
Provides-Extra: docs
|
|
56
|
+
Requires-Dist: sphinx>=7.0.0; extra == "docs"
|
|
57
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
58
|
+
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "docs"
|
|
59
|
+
Requires-Dist: furo>=2023.9.10; extra == "docs"
|
|
60
|
+
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "docs"
|
|
61
|
+
Requires-Dist: sphinxcontrib-mermaid>=0.9.2; extra == "docs"
|
|
62
|
+
Requires-Dist: sphinxcontrib-plantuml>=0.25; extra == "docs"
|
|
63
|
+
Requires-Dist: sphinx-autoapi>=3.0.0; extra == "docs"
|
|
64
|
+
Dynamic: license-file
|
|
65
|
+
|
|
66
|
+
# Julee
|
|
67
|
+
|
|
68
|
+
Clean architecture for accountable and transparent digital supply chains.
|
|
69
|
+
|
|
70
|
+
Julee is a Python framework for building resilient, auditable business processes using Temporal workflows. Solutions are organized around your business domain—your bounded contexts become "accelerators" that speak your business language, not framework jargon.
|
|
71
|
+
|
|
72
|
+
**Use Julee when:** processes must be done correctly, may be complex or long-running, need compliance audit trails (responsible AI, algorithmic due-diligence), or depend on unreliable services that may fail, timeout, or be rate-limited.
|
|
73
|
+
|
|
74
|
+
**Core concepts:** Accelerators are collections of pipelines that automate a business area. Pipelines are use cases wrapped with Temporal, providing durability (survives crashes), reliability (automatic retries), observability (complete execution history), and supply chain provenance (audit trails that become "digital product passports").
|
|
75
|
+
|
|
76
|
+
## Installation
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pip install julee
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Runtime Dependencies
|
|
83
|
+
|
|
84
|
+
Julee applications require: [Temporal](https://temporal.io/) (workflow orchestration), S3-compatible object storage (e.g. MinIO), PostgreSQL (for Temporal).
|
|
85
|
+
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
Full documentation at [julee.readthedocs.io](https://julee.readthedocs.io), package on [PyPI](https://pypi.org/project/julee/).
|
|
89
|
+
|
|
90
|
+
## Example
|
|
91
|
+
|
|
92
|
+
This repository includes a Docker Compose example demonstrating a meeting minutes extraction system:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
cp .env.example .env # Add your ANTHROPIC_API_KEY
|
|
96
|
+
docker compose up --build
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
See the `demo-ui/` directory for the UI source.
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
GPL-3.0 — see [LICENSE](LICENSE) for details.
|
julee-0.1.5/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Julee
|
|
2
|
+
|
|
3
|
+
Clean architecture for accountable and transparent digital supply chains.
|
|
4
|
+
|
|
5
|
+
Julee is a Python framework for building resilient, auditable business processes using Temporal workflows. Solutions are organized around your business domain—your bounded contexts become "accelerators" that speak your business language, not framework jargon.
|
|
6
|
+
|
|
7
|
+
**Use Julee when:** processes must be done correctly, may be complex or long-running, need compliance audit trails (responsible AI, algorithmic due-diligence), or depend on unreliable services that may fail, timeout, or be rate-limited.
|
|
8
|
+
|
|
9
|
+
**Core concepts:** Accelerators are collections of pipelines that automate a business area. Pipelines are use cases wrapped with Temporal, providing durability (survives crashes), reliability (automatic retries), observability (complete execution history), and supply chain provenance (audit trails that become "digital product passports").
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install julee
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Runtime Dependencies
|
|
18
|
+
|
|
19
|
+
Julee applications require: [Temporal](https://temporal.io/) (workflow orchestration), S3-compatible object storage (e.g. MinIO), PostgreSQL (for Temporal).
|
|
20
|
+
|
|
21
|
+
## Documentation
|
|
22
|
+
|
|
23
|
+
Full documentation at [julee.readthedocs.io](https://julee.readthedocs.io), package on [PyPI](https://pypi.org/project/julee/).
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
This repository includes a Docker Compose example demonstrating a meeting minutes extraction system:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cp .env.example .env # Add your ANTHROPIC_API_KEY
|
|
31
|
+
docker compose up --build
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
See the `demo-ui/` directory for the UI source.
|
|
35
|
+
|
|
36
|
+
## License
|
|
37
|
+
|
|
38
|
+
GPL-3.0 — see [LICENSE](LICENSE) for details.
|
|
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "julee"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.5"
|
|
8
8
|
description = "Julee - Clean architecture for accountable and transparent digital supply chains"
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
11
|
license = {text = "GPL-3.0"}
|
|
12
12
|
authors = [
|
|
13
13
|
{name = "Pyx Industries", email = "chris@pyx.io"}
|
|
@@ -18,7 +18,6 @@ classifiers = [
|
|
|
18
18
|
"Intended Audience :: Developers",
|
|
19
19
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
20
20
|
"Programming Language :: Python :: 3",
|
|
21
|
-
"Programming Language :: Python :: 3.10",
|
|
22
21
|
"Programming Language :: Python :: 3.11",
|
|
23
22
|
"Programming Language :: Python :: 3.12",
|
|
24
23
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
@@ -55,6 +54,7 @@ dev = [
|
|
|
55
54
|
"pytest>=8.0.0",
|
|
56
55
|
"pytest-asyncio>=1.0.0",
|
|
57
56
|
"pytest-cov>=4.1.0",
|
|
57
|
+
"pytest-xdist>=3.5.0",
|
|
58
58
|
"hypothesis>=6.0.0",
|
|
59
59
|
"factory-boy>=3.2.0",
|
|
60
60
|
# Type checking
|
|
@@ -107,10 +107,20 @@ asyncio_mode = "auto"
|
|
|
107
107
|
addopts = [
|
|
108
108
|
"--strict-markers",
|
|
109
109
|
"--tb=short",
|
|
110
|
+
"-n", "auto",
|
|
111
|
+
"--dist", "loadgroup",
|
|
110
112
|
"--cov=src/julee",
|
|
111
113
|
"--cov-report=term-missing",
|
|
112
114
|
"--cov-report=html",
|
|
113
115
|
]
|
|
116
|
+
markers = [
|
|
117
|
+
"unit: Unit tests (fast, isolated)",
|
|
118
|
+
"integration: Integration tests (slower, with dependencies)",
|
|
119
|
+
"e2e: End-to-end tests (slowest, full stack)",
|
|
120
|
+
"llm: Tests that use real LLM API calls (slow, costs money)",
|
|
121
|
+
"contract: Contract tests (verify external API shapes and mock fidelity)",
|
|
122
|
+
"slow: Slow tests (stress tests, load tests)",
|
|
123
|
+
]
|
|
114
124
|
|
|
115
125
|
[tool.coverage.run]
|
|
116
126
|
source = ["src/julee"]
|
|
@@ -18,6 +18,8 @@ from julee.api.routers.documents import router
|
|
|
18
18
|
from julee.domain.models.document import Document, DocumentStatus
|
|
19
19
|
from julee.repositories.memory import MemoryDocumentRepository
|
|
20
20
|
|
|
21
|
+
pytestmark = pytest.mark.unit
|
|
22
|
+
|
|
21
23
|
|
|
22
24
|
@pytest.fixture
|
|
23
25
|
def memory_repo() -> MemoryDocumentRepository:
|
|
@@ -61,7 +63,7 @@ def sample_documents() -> list[Document]:
|
|
|
61
63
|
created_at=datetime(2024, 1, 1, 12, 0, 0, tzinfo=timezone.utc),
|
|
62
64
|
updated_at=datetime(2024, 1, 1, 12, 0, 0, tzinfo=timezone.utc),
|
|
63
65
|
additional_metadata={"type": "test"},
|
|
64
|
-
|
|
66
|
+
content_bytes="test content",
|
|
65
67
|
),
|
|
66
68
|
Document(
|
|
67
69
|
document_id="doc-2",
|
|
@@ -73,7 +75,7 @@ def sample_documents() -> list[Document]:
|
|
|
73
75
|
created_at=datetime(2024, 1, 2, 12, 0, 0, tzinfo=timezone.utc),
|
|
74
76
|
updated_at=datetime(2024, 1, 2, 12, 0, 0, tzinfo=timezone.utc),
|
|
75
77
|
additional_metadata={"type": "report"},
|
|
76
|
-
|
|
78
|
+
content_bytes="pdf content",
|
|
77
79
|
),
|
|
78
80
|
]
|
|
79
81
|
|
|
@@ -203,7 +205,7 @@ class TestGetDocument:
|
|
|
203
205
|
assert data["additional_metadata"] == doc.additional_metadata
|
|
204
206
|
|
|
205
207
|
# Content should NOT be included in metadata endpoint
|
|
206
|
-
assert data["
|
|
208
|
+
assert data["content_bytes"] is None
|
|
207
209
|
# Content field is excluded from JSON response
|
|
208
210
|
assert "content" not in data
|
|
209
211
|
|
|
@@ -273,7 +275,7 @@ class TestGetDocumentContent:
|
|
|
273
275
|
memory_repo: MemoryDocumentRepository,
|
|
274
276
|
) -> None:
|
|
275
277
|
"""Test content retrieval when document has no content."""
|
|
276
|
-
# Create document with
|
|
278
|
+
# Create document with content_bytes first to pass validation
|
|
277
279
|
doc = Document(
|
|
278
280
|
document_id="doc-no-content",
|
|
279
281
|
original_filename="empty.txt",
|
|
@@ -282,7 +284,7 @@ class TestGetDocumentContent:
|
|
|
282
284
|
content_multihash="empty_hash",
|
|
283
285
|
status=DocumentStatus.CAPTURED,
|
|
284
286
|
additional_metadata={"type": "empty"},
|
|
285
|
-
|
|
287
|
+
content_bytes="temp",
|
|
286
288
|
)
|
|
287
289
|
|
|
288
290
|
# Save document normally, then manually remove content from storage
|
|
@@ -290,7 +292,7 @@ class TestGetDocumentContent:
|
|
|
290
292
|
stored_doc = memory_repo.storage_dict[doc.document_id]
|
|
291
293
|
# Remove content from the stored document
|
|
292
294
|
memory_repo.storage_dict[doc.document_id] = stored_doc.model_copy(
|
|
293
|
-
update={"content": None, "
|
|
295
|
+
update={"content": None, "content_bytes": None}
|
|
294
296
|
)
|
|
295
297
|
|
|
296
298
|
# Make request
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Polling Contrib Module.
|
|
3
|
+
|
|
4
|
+
This module provides ready-made polling functionality for external endpoints.
|
|
5
|
+
It follows the Julee contrib module pattern, providing a complete polling
|
|
6
|
+
solution that can be imported and used by Julee solutions.
|
|
7
|
+
|
|
8
|
+
The polling module includes:
|
|
9
|
+
- Domain models for polling configuration and results
|
|
10
|
+
- Service protocols for polling operations
|
|
11
|
+
- HTTP implementation for REST API polling
|
|
12
|
+
- Co-located tests and examples
|
|
13
|
+
|
|
14
|
+
Example usage:
|
|
15
|
+
from julee.contrib.polling.domain.models.polling_config import PollingConfig, PollingProtocol
|
|
16
|
+
from julee.contrib.polling.infrastructure.services.polling.http import HttpPollerService
|
|
17
|
+
from julee.contrib.polling.domain.services.poller import PollerService
|
|
18
|
+
from julee.contrib.polling.domain.models.polling_config import PollingResult
|
|
19
|
+
|
|
20
|
+
# Configure polling
|
|
21
|
+
config = PollingConfig(
|
|
22
|
+
endpoint_identifier="api-v1",
|
|
23
|
+
polling_protocol=PollingProtocol.HTTP,
|
|
24
|
+
connection_params={"url": "https://api.example.com/data"},
|
|
25
|
+
timeout_seconds=30
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Poll the endpoint
|
|
29
|
+
service = HttpPollerService()
|
|
30
|
+
result = await service.poll_endpoint(config)
|
|
31
|
+
|
|
32
|
+
Note: All imports must be explicit to avoid import chains that can pull
|
|
33
|
+
non-deterministic code into Temporal workflows. Import directly from
|
|
34
|
+
the specific modules you need rather than using this convenience module.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
# No re-exports to avoid import chains that pull non-deterministic code
|
|
38
|
+
# into Temporal workflows. Import from specific submodules instead:
|
|
39
|
+
#
|
|
40
|
+
# Domain:
|
|
41
|
+
# - from julee.contrib.polling.domain.models.polling_config import PollingConfig, PollingProtocol, PollingResult
|
|
42
|
+
# - from julee.contrib.polling.domain.services.poller import PollerService
|
|
43
|
+
#
|
|
44
|
+
# Infrastructure:
|
|
45
|
+
# - from julee.contrib.polling.infrastructure.services.polling.http import HttpPollerService
|
|
46
|
+
# - from julee.contrib.polling.infrastructure.temporal.manager import PollingManager
|
|
47
|
+
# - from julee.contrib.polling.infrastructure.temporal.proxies import WorkflowPollerServiceProxy
|
|
48
|
+
# - from julee.contrib.polling.infrastructure.temporal.activities import TemporalPollerService
|
|
49
|
+
|
|
50
|
+
__all__ = []
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Application entry points for the polling contrib module.
|
|
3
|
+
|
|
4
|
+
This module contains the application-layer components that provide entry points
|
|
5
|
+
for the polling contrib module, including worker pipelines, API routes, and
|
|
6
|
+
CLI commands.
|
|
7
|
+
|
|
8
|
+
Following the ADR contrib module structure, this layer wires together domain
|
|
9
|
+
services and infrastructure implementations into runnable applications.
|
|
10
|
+
|
|
11
|
+
No re-exports to avoid import chains that pull non-deterministic code
|
|
12
|
+
into Temporal workflows. Import directly from specific modules:
|
|
13
|
+
|
|
14
|
+
- from julee.contrib.polling.apps.worker.pipelines import NewDataDetectionPipeline
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
__all__ = []
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Worker applications for the polling contrib module.
|
|
3
|
+
|
|
4
|
+
This module contains worker-specific entry points for the polling contrib module,
|
|
5
|
+
including Temporal workflows (pipelines) that orchestrate polling operations
|
|
6
|
+
with durability guarantees.
|
|
7
|
+
|
|
8
|
+
The worker applications in this module can be registered with Temporal workers
|
|
9
|
+
to provide polling capabilities within workflow contexts.
|
|
10
|
+
|
|
11
|
+
No re-exports to avoid import chains that pull non-deterministic code
|
|
12
|
+
into Temporal workflows. Import directly from specific modules:
|
|
13
|
+
|
|
14
|
+
- from julee.contrib.polling.apps.worker.pipelines import NewDataDetectionPipeline
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
__all__ = []
|