import logging
import json
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def extend_metadata(data, metadata_override=None):
"""
Extends existing metadata for a given data object with optional overrides.
Args:
data (dict): The data object to extend metadata for.
metadata_override (dict, optional): A dictionary of metadata to override. Defaults to None.
Returns:
dict: The data object with extended metadata.
"""
metadata = data.get('metadata', {}) # Get existing metadata, default to empty dict
if metadata_override:
metadata.update(metadata_override) # Update existing metadata with overrides
# Add default metadata if it doesn't exist
if 'created_at' not in metadata:
metadata['created_at'] = datetime.now().isoformat()
logging.info(f"Added default metadata: created_at = {metadata['created_at']}")
if 'updated_at' not in metadata:
metadata['updated_at'] = datetime.now().isoformat()
logging.info(f"Added default metadata: updated_at = {metadata['updated_at']}")
if 'source' not in metadata:
metadata['source'] = 'internal_tool'
logging.info(f"Added default metadata: source = internal_tool")
# Optionally add more default metadata fields.
data['metadata'] = metadata # Update the data with the extended metadata
logging.info(f"Extended metadata for data: {data}")
return data
from datetime import datetime
if __name__ == '__main__':
# Example Usage
test_data = {'id': 123, 'value': 'test'}
override_metadata = {'status': 'active', 'version': '1.0'}
extended_data = extend_metadata(test_data, override_metadata)
print(json.dumps(extended_data, indent=2))
extended_data_no_override = extend_metadata(test_data)
print(json.dumps(extended_data_no_override, indent=2))
Add your comment