From 9ccee0d42202299587e4fbc897d6bde0fe0aa0e9 Mon Sep 17 00:00:00 2001 From: Jack Cushman Date: Wed, 5 Feb 2025 15:47:05 -0500 Subject: [PATCH] metadata updates --- collections/data_gov/docs/LIL_HLSL_logos.png | Bin 45712 -> 37156 bytes scripts/collection/cloudflare_tools.py | 2 +- scripts/collection/s3_tools.py | 56 +++++++++++ scripts/collection/sync.py | 31 ------ scripts/collection/write_metadata.py | 99 +++++++++++++++++++ scripts/github/download_git.py | 2 +- scripts/helpers/{config.py => misc.py} | 9 +- 7 files changed, 165 insertions(+), 34 deletions(-) delete mode 100644 scripts/collection/sync.py create mode 100644 scripts/collection/write_metadata.py rename scripts/helpers/{config.py => misc.py} (62%) diff --git a/collections/data_gov/docs/LIL_HLSL_logos.png b/collections/data_gov/docs/LIL_HLSL_logos.png index 8966ae7571dfb58b60baa762f93e617e6e7a862f..e9bcd0fa07c8dd0f401f28aa83e872fe0bad6ba6 100644 GIT binary patch literal 37156 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⁡y!bk2~l2e6M2=Z|NW~$2Z&Xd-F}3ZkDDqv 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 E16eFnS^xk5 literal 45712 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 diff --git a/scripts/collection/cloudflare_tools.py b/scripts/collection/cloudflare_tools.py index 77bb40d..6050d6c 100644 --- a/scripts/collection/cloudflare_tools.py +++ b/scripts/collection/cloudflare_tools.py @@ -3,7 +3,7 @@ from pathlib import Path import click from cloudflare import Cloudflare import os -from scripts.helpers.config import load_config +from scripts.helpers.misc import load_config logger = logging.getLogger(__name__) diff --git a/scripts/collection/s3_tools.py b/scripts/collection/s3_tools.py index 625485a..35e704f 100644 --- a/scripts/collection/s3_tools.py +++ b/scripts/collection/s3_tools.py @@ -3,6 +3,13 @@ import click from tqdm import tqdm import logging from itertools import islice +import json +import gzip +from io import BytesIO +import tempfile +import os +from scripts.helpers.misc import json_default +import zipfile logger = logging.getLogger(__name__) @@ -76,6 +83,36 @@ def delete_empty_files(s3_client, bucket: str, prefix: str, dry_run: bool = Fals pbar.close() +def write_file_listing(s3_client, bucket: str, prefix: str, index_key: str): + """Write a JSONL listing of all files under prefix to index_key.""" + # Create a temporary file + with tempfile.NamedTemporaryFile(mode='wb', suffix='.zip', delete=True) as tmp: + with zipfile.ZipFile(tmp, mode='w', compression=zipfile.ZIP_DEFLATED) as zf: + # Create a temporary file for the JSONL content + with tempfile.NamedTemporaryFile(mode='w', suffix='.jsonl', delete=True) as jsonl: + paginator = s3_client.get_paginator('list_objects_v2') + for page in tqdm(paginator.paginate(Bucket=bucket, Prefix=prefix), desc="indexing"): + if 'Contents' in page: + for obj in page['Contents']: + # Write each object as a JSON line using custom encoder + line = json.dumps(obj, default=json_default) + '\n' + jsonl.write(line) + + # Flush the JSONL file and add it to the zip + jsonl.flush() + zf.write(jsonl.name, arcname='file_listing.jsonl') + + # Upload the zip file + tmp.flush() + s3_client.upload_file( + tmp.name, + bucket, + index_key, + ExtraArgs={'ContentType': 'application/zip'} + ) + + logger.info(f"Wrote index to s3://{bucket}/{index_key}") + @click.group() def cli(): """S3 object management commands.""" @@ -113,6 +150,25 @@ def delete_empty(s3_path: str, profile: str = None, dry_run: bool = False, log_l delete_empty_files(s3_client, bucket, prefix, dry_run) +@cli.command() +@click.argument('s3_path') +@click.option('--profile', help='AWS profile name', default='sc-direct') +@click.option('--output', '-o', help='Output path for index file', default=None) +@click.option('--log-level', type=click.Choice(['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']), + default='INFO', help='Set logging level') +def write_index(s3_path: str, profile: str = None, output: str | None = None, log_level: str = 'INFO'): + """Write a JSONL index of all files under the given prefix.""" + logging.basicConfig(level=log_level) + bucket, prefix = s3_path.split('/', 1) + + if output is None: + output = prefix.rstrip('/') + '/file_listing.jsonl.zip' + + session = boto3.Session(profile_name=profile) + s3_client = session.client('s3') + + write_file_listing(s3_client, bucket, prefix, output) + if __name__ == '__main__': cli() diff --git a/scripts/collection/sync.py b/scripts/collection/sync.py deleted file mode 100644 index 69eba48..0000000 --- a/scripts/collection/sync.py +++ /dev/null @@ -1,31 +0,0 @@ -import boto3 -import click -import json -from pathlib import Path -import logging - -logger = logging.getLogger(__name__) - -@click.command() -@click.option('--collections-file', '-c', type=click.Path(exists=True, path_type=Path), - default='collections/collections.json', - help='Path to collections configuration file.') -def main(collections_file: Path): - # Load collections config - collections = json.loads(collections_file.read_text()) - collections_dir = collections_file.parent - - for collection in collections: - s3 = boto3.Session(profile_name=collection['aws_profile']).client('s3') - collection_path = collections_dir / collection['directory'] - bucket_name, s3_prefix = collection['s3_path'].split('/', 1) - - for file_path in collection_path.rglob('*'): - if file_path.is_file(): - relative_path = file_path.relative_to(collection_path) - s3_key = f"{s3_prefix}/{relative_path}" - print(f"Uploading {file_path} to s3://{bucket_name}/{s3_key}") - s3.upload_file(str(file_path), bucket_name, s3_key) - -if __name__ == '__main__': - main() diff --git a/scripts/collection/write_metadata.py b/scripts/collection/write_metadata.py new file mode 100644 index 0000000..6870156 --- /dev/null +++ b/scripts/collection/write_metadata.py @@ -0,0 +1,99 @@ +import boto3 +import click +import json +from pathlib import Path +import logging +import csv +import zipfile +from tqdm import tqdm +logger = logging.getLogger(__name__) + +@click.group() +def cli(): + pass + +@cli.command() +@click.option('--collections-file', '-c', type=click.Path(exists=True, path_type=Path), + default='collections/collections.json', + help='Path to collections configuration file.') +def write_readme(collections_file: Path): + # Load collections config + collections = json.loads(collections_file.read_text()) + collections_dir = collections_file.parent + + for collection in collections: + s3 = boto3.Session(profile_name=collection['aws_profile']).client('s3') + collection_path = collections_dir / collection['directory'] + bucket_name, s3_prefix = collection['s3_path'].split('/', 1) + + for file_path in collection_path.rglob('*'): + if file_path.is_file(): + relative_path = file_path.relative_to(collection_path) + s3_key = f"{s3_prefix}/{relative_path}" + print(f"Uploading {file_path} to s3://{bucket_name}/{s3_key}") + s3.upload_file(str(file_path), bucket_name, s3_key) + +@cli.command() +@click.argument('metadata_file', type=click.Path(exists=True, path_type=Path)) +@click.argument('output_file', type=click.Path(path_type=Path)) +def write_csv(metadata_file: Path, output_file: Path): + """ + Read a zipped JSONL file of metadata and write dataset info to CSV. + + metadata_file: Path to the zip file containing metadata JSONL + output_file: Path where the CSV should be written + """ + with zipfile.ZipFile(metadata_file, 'r') as zf, \ + open(output_file, 'w', newline='') as csvfile: + + jsonl_name = metadata_file.name.replace('.zip', '') + writer = csv.writer(csvfile) + writer.writerow(['name', 'title']) # Write header + + with zf.open(jsonl_name) as f: + for line in tqdm(f, desc="Writing CSV"): + try: + metadata = json.loads(line) + except json.JSONDecodeError: + print(line) + breakpoint() + print(line) + continue + dataset_info = metadata.get('signed_metadata', {}).get('data_gov_metadata', {}) + if dataset_info: + writer.writerow([ + dataset_info.get('name', ''), + dataset_info.get('title', '') + ]) + +@cli.command() +@click.argument('metadata_dir', type=click.Path(exists=True, path_type=Path)) +@click.argument('output_file', type=click.Path(path_type=Path)) +def write_jsonl(metadata_dir: Path, output_file: Path): + """ + Read each .json file, recursively, in metadata directory and write to a single zipped JSONL file. + All records are written to a single JSONL file within the zip, named same as output_file without .zip + """ + # Get the base filename without .zip extension for the internal file + internal_filename = output_file.name.replace('.zip', '') + output_dir = output_file.parent + + # Use force_zip64=True to handle files larger than 2GB + with zipfile.ZipFile(output_file, 'w') as zf: + # Create a single file in the zip archive + with zf.open(internal_filename, 'w', force_zip64=True) as f: + # Iterate through all JSON files + for file_path in tqdm(metadata_dir.rglob('*.json'), desc="Writing JSONL"): + with open(file_path, 'r') as json_file: + try: + metadata = json.load(json_file) + except json.JSONDecodeError: + print(file_path) + raise + metadata['metadata_path'] = str(file_path.relative_to(output_dir)) + metadata['collection_path'] = metadata['metadata_path'].replace('metadata', 'collections', 1) + # Write each record to the same file, with newline + f.write((json.dumps(metadata) + '\n').encode('utf-8')) + +if __name__ == '__main__': + cli() diff --git a/scripts/github/download_git.py b/scripts/github/download_git.py index 3ba6d43..8aafc25 100644 --- a/scripts/github/download_git.py +++ b/scripts/github/download_git.py @@ -9,7 +9,7 @@ from gitspoke.cli import valid_include_items, get_token import os import json import requests -from scripts.helpers.config import load_config +from scripts.helpers.misc import load_config logger = logging.getLogger(__name__) stats_counter = {} diff --git a/scripts/helpers/config.py b/scripts/helpers/misc.py similarity index 62% rename from scripts/helpers/config.py rename to scripts/helpers/misc.py index d1bcc1c..00340ee 100644 --- a/scripts/helpers/config.py +++ b/scripts/helpers/misc.py @@ -10,4 +10,11 @@ def load_config(): config = json.loads(CONFIG_PATH.read_text()) else: config = {} - return config \ No newline at end of file + return config + + +def json_default(obj): + """Default JSON encoder for serializing datetime objects.""" + if hasattr(obj, 'isoformat'): + return obj.isoformat() + return super().default(obj) \ No newline at end of file