timber-common 1.2.1__tar.gz → 1.2.2__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.
- {timber_common-1.2.1 → timber_common-1.2.2}/CHANGELOG.md +8 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/PKG-INFO +1 -1
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/db_service.py +16 -22
- {timber_common-1.2.1 → timber_common-1.2.2}/pyproject.toml +1 -1
- {timber_common-1.2.1 → timber_common-1.2.2}/LICENSE +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/README.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/cli/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/cli/commands/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/cli/commands/validate.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/cli/main.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/config/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/config/model_loader.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/engine/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/engine/config_executor.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/engine/operation_registry.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/init.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/a2ui.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/base.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/configs/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/core/__init.__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/core/enterprise.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/core/tag.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/core/user.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/factory.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/mixins.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/models/registry.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/plugins/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/plugins/contract.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/plugins/discovery.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/render/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/render/pdf.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/README.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/base.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/definition.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/enums.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/patterns.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/state.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/schemas/workflow/transition.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/a2a/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/a2a/client.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/communication/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/communication/email_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/communication/messaging_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/communication/sms_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/decision_engine.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/expression_engine.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/graph_evaluator.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/models.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/table_evaluator.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/encryption/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/encryption/field_encryption.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/gdpr/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/gdpr/deletion.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/auth_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/integration_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/mapping_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/models.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/registry.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/available_capabilities.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/cached_capabilities.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/loader.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/batch.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/calibration.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/confidence.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/contract.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/guards.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/models.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/providers/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/providers/fixture.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/judgment/providers/typesafe.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/base.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/claude_provider.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/gemini_provider.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/groq_provider.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/model_choice.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm/perplexity_provider.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/llm_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/DIRECTORY_STRUCTURE.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/MIGRATION_GUIDE.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/QUICKSTART.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/README.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/VIDEO_README.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/config_helpers.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/examples.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/image_generation.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/model_resolver.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/video_examples.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/media/video_generation.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/base.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/cache.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/instances.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/manager.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/notification.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/research.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/session.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/persistence/tracker.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/registry.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/invalidator.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/user_context_cache.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/valkey_client.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/workflow_catalog_cache.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/security/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/security/oauth_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vector/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vector/auto_ingestion.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vector/search.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vector/tag_embedding.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vendors/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/services/vendors/stripe_service.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/config.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/db_url.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/db_utils.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/decisioning/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/decisioning/csv_parser.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/decisioning/dmn_parser.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/decisioning/yaml_exporter.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/decisioning/yaml_parser.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/helpers.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/llm/chunk_aggregator.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/llm/content_condenser.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/llm/content_handler.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/llm/hierarchical_summarizer.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/serialization_helpers.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/time_helpers.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/common/utils/validators.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/00_association_tables.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/messaging_models.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/notification_models.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/oauth_models.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/user_preferences_models.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/data/models/vector_db_models.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/DOCUMENTATION_INDEX.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/DOCUMENTATION_SUMMARY.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/PROGRESS_UPDATE.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/TIMBER_SESSION_API_REFERENCE.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/01_model_design_patterns.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/02_service_architecture.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/03_data_fetching_strategies.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/04_caching_strategies.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/05_error_handling.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/06_performance_optimization.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/07_security_best_practices.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/01_system_architecture.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/02_config_driven_models.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/03_persistence_layer.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/04_vector_integration.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/05_multi_app_support.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/01_getting_started.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/02_creating_models.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/03_using_services.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/04_financial_data_fetching.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/05_encryption_and_security.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/06_vector_search.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/07_gdpr_compliance.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/08_testing_guide.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/09_typed_judgment.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/modules/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/modules/config/custom_analysis.yaml +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/README.md +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/__init__.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/bootstrap.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/cache.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/canopy_auth.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/client.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/env.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/models.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/specs.py +0 -0
- {timber_common-1.2.1 → timber_common-1.2.2}/oak_config/subscriber.py +0 -0
|
@@ -5,6 +5,14 @@ All notable changes to Timber will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.2.2] - 2026-10-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Reject malformed and unknown database filters instead of dropping their predicates.
|
|
13
|
+
- Require non-empty filter dictionaries for updates and deletes, and preserve null
|
|
14
|
+
filters as SQL `IS NULL` predicates so a scoped mutation cannot become table-wide.
|
|
15
|
+
|
|
8
16
|
## [1.2.1] - 2026-10-06
|
|
9
17
|
|
|
10
18
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: timber-common
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Configuration-driven persistence library with ml tools (finance related) config driven db model registration, llm model choice, automatic encryption, caching, vector search, and GDPR compliance for Python applications
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: orm,sqlalchemy,persistence,vector-search,semantic-search,encryption,gdpr,yaml-config,postgres,redis,configuration-driven,data-modeling,machine-learning,embeddings
|
|
@@ -323,29 +323,18 @@ class DBService:
|
|
|
323
323
|
|
|
324
324
|
def _apply_filters(self, query, model_class: Type, filters: Dict[str, Any]):
|
|
325
325
|
"""Apply filters to query."""
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return query
|
|
329
|
-
|
|
330
|
-
# Handle string filters (invalid input - return unfiltered)
|
|
331
|
-
if isinstance(filters, str):
|
|
332
|
-
logger.warning(f"Received string filters instead of dict: {filters}")
|
|
333
|
-
return query
|
|
334
|
-
|
|
335
|
-
# Handle non-dict filters
|
|
326
|
+
if filters is None:
|
|
327
|
+
filters = {}
|
|
336
328
|
if not isinstance(filters, dict):
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
329
|
+
raise ValueError("Filters must be a dict")
|
|
330
|
+
unknown = [field for field in filters if not hasattr(model_class, field)]
|
|
331
|
+
if unknown:
|
|
332
|
+
raise ValueError(f"Unknown filter fields: {', '.join(map(str, unknown))}")
|
|
341
333
|
for field, value in filters.items():
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
query = query.filter(getattr(model_class, field) == value)
|
|
345
|
-
else:
|
|
346
|
-
logger.warning(f"Model {model_class.__name__} has no field '{field}'")
|
|
334
|
+
# SQLAlchemy translates None to IS NULL; dropping it broadens scope.
|
|
335
|
+
query = query.filter(getattr(model_class, field) == value)
|
|
347
336
|
return query
|
|
348
|
-
|
|
337
|
+
|
|
349
338
|
def _apply_ordering(self, query, model_class: Type, order_by):
|
|
350
339
|
"""Apply ordering to a query.
|
|
351
340
|
|
|
@@ -462,8 +451,7 @@ class DBService:
|
|
|
462
451
|
logger.warning(f"Filters passed as string, using empty filters. Got: {filters}")
|
|
463
452
|
filters = {}
|
|
464
453
|
elif not isinstance(filters, dict):
|
|
465
|
-
|
|
466
|
-
filters = {}
|
|
454
|
+
raise ValueError("Filters must be a dict")
|
|
467
455
|
|
|
468
456
|
if include_relationships is None:
|
|
469
457
|
include_relationships = []
|
|
@@ -594,6 +582,9 @@ class DBService:
|
|
|
594
582
|
data={'status': 'completed'}
|
|
595
583
|
)
|
|
596
584
|
"""
|
|
585
|
+
if not isinstance(filters, dict) or not filters:
|
|
586
|
+
raise ValueError("Mutations require a non-empty filter dict")
|
|
587
|
+
|
|
597
588
|
model_class = self._get_model_class(model)
|
|
598
589
|
|
|
599
590
|
with self.session_scope() as session:
|
|
@@ -627,6 +618,9 @@ class DBService:
|
|
|
627
618
|
filters={'id': 'goal-123'}
|
|
628
619
|
)
|
|
629
620
|
"""
|
|
621
|
+
if not isinstance(filters, dict) or not filters:
|
|
622
|
+
raise ValueError("Mutations require a non-empty filter dict")
|
|
623
|
+
|
|
630
624
|
model_class = self._get_model_class(model)
|
|
631
625
|
|
|
632
626
|
with self.session_scope() as session:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "timber-common"
|
|
3
|
-
version = "1.2.
|
|
3
|
+
version = "1.2.2"
|
|
4
4
|
description = "Configuration-driven persistence library with ml tools (finance related) config driven db model registration, llm model choice, automatic encryption, caching, vector search, and GDPR compliance for Python applications"
|
|
5
5
|
authors = ["Pumulo Sikaneta <pumulo@gmail.com>"]
|
|
6
6
|
maintainers = ["Pumulo Sikaneta <pumulo@gmail.com>"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/communication/messaging_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/decisioning/expression_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/integrations/integration_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/available_capabilities.py
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/inventory/cached_capabilities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/user_context_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/common/services/runtime_cache/workflow_catalog_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/01_model_design_patterns.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/02_service_architecture.md
RENAMED
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/04_caching_strategies.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/best_practices/05_error_handling.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/01_system_architecture.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/02_config_driven_models.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/03_persistence_layer.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/04_vector_integration.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/design_guides/05_multi_app_support.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/04_financial_data_fetching.md
RENAMED
|
File without changes
|
{timber_common-1.2.1 → timber_common-1.2.2}/documentation/how_to/05_encryption_and_security.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|