{
  "files": [
    {
      "path": "src/cli.py",
      "content": "\"\"\"CLI application using Click.\"\"\"\nimport click\nimport json\nfrom pathlib import Path\nfrom .core import process_data, validate_input\n\n@click.group()\n@click.version_option(version=\"1.0.0\")\ndef cli() -> None:\n    \"\"\"Data processing CLI tool.\"\"\"\n    pass\n\n@cli.command()\n@click.argument(\"input_file\", type=click.Path(exists=True))\n@click.option(\"--output\", \"-o\", type=click.Path(), default=\"output.json\", help=\"Output file path\")\n@click.option(\"--format\", \"-f\", type=click.Choice([\"json\", \"csv\", \"yaml\"]), default=\"json\")\n@click.option(\"--verbose\", \"-v\", is_flag=True, help=\"Enable verbose output\")\ndef process(input_file: str, output: str, format: str, verbose: bool) -> None:\n    \"\"\"Process input data and generate output.\"\"\"\n    if verbose:\n        click.echo(f\"Processing {input_file}...\")\n    data = validate_input(Path(input_file))\n    result = process_data(data, output_format=format)\n    Path(output).write_text(json.dumps(result, indent=2))\n    click.echo(f\"Output written to {output}\")\n\n@cli.command()\n@click.argument(\"input_file\", type=click.Path(exists=True))\ndef validate(input_file: str) -> None:\n    \"\"\"Validate input data without processing.\"\"\"\n    try:\n        validate_input(Path(input_file))\n        click.echo(\"Validation passed.\")\n    except ValueError as e:\n        click.echo(f\"Validation failed: {e}\", err=True)\n        raise SystemExit(1)\n\nif __name__ == \"__main__\":\n    cli()\n",
      "type": "entrypoint"
    },
    {
      "path": "src/core.py",
      "content": "\"\"\"Core data processing logic.\"\"\"\nfrom pathlib import Path\nfrom typing import Any\nimport json\n\ndef validate_input(path: Path) -> dict[str, Any]:\n    \"\"\"Validate and load input file.\"\"\"\n    if not path.exists():\n        raise ValueError(f\"File not found: {path}\")\n    if path.suffix not in (\".json\", \".csv\"):\n        raise ValueError(f\"Unsupported format: {path.suffix}\")\n    with open(path) as f:\n        data = json.load(f)\n    if not isinstance(data, dict):\n        raise ValueError(\"Input must be a JSON object\")\n    return data\n\ndef process_data(data: dict[str, Any], output_format: str = \"json\") -> dict[str, Any]:\n    \"\"\"Process input data and return result.\"\"\"\n    result = {\"status\": \"processed\", \"records\": len(data), \"format\": output_format}\n    for key, value in data.items():\n        result[key] = value\n    return result\n",
      "type": "module"
    },
    {
      "path": "pyproject.toml",
      "content": "[project]\nname = \"data-processor\"\nversion = \"0.1.0\"\nrequires-python = \">=3.11\"\ndependencies = [\"click>=8.0\"]\n\n[project.scripts]\ndataproc = \"src.cli:cli\"\n",
      "type": "config"
    }
  ]
}
