{"library":"petl","title":"petl","description":"petl is a versatile, open-source Python package designed for Extract, Transform, and Load (ETL) operations on tabular data. It provides a simple yet powerful way to handle data from various sources like CSV files, databases, or in-memory structures, focusing on memory efficiency and ease of use. As of version 1.7.17, it is actively maintained with regular releases and a focus on core ETL functionalities, making it suitable for data engineers and analysts seeking efficient pipelines without the overhead of heavier frameworks.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install petl"],"cli":null},"imports":["import petl as etl"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import petl as etl\nimport os\n\n# Simulate an input CSV file\ncsv_data = \"\"\"name,age,city\nalice,30,new york\nbob,24,london\ncharlie,35,paris\ndiana,28,london\n\"\"\"\nwith open('input.csv', 'w') as f:\n    f.write(csv_data)\n\n# Extract: Read data from a CSV file\ntable1 = etl.fromcsv('input.csv')\n\n# Transform: Filter rows where age is > 25 and city is 'london'\ntable2 = etl.select(table1, lambda row: row.age > 25 and row.city == 'london')\n\n# Add a new column 'status'\ntable3 = etl.addfield(table2, 'status', 'eligible')\n\n# Load: Write the transformed data to a new CSV file\netl.tocsv(table3, 'output.csv')\n\n# Verify the output\nwith open('output.csv', 'r') as f:\n    print(f.read())\n\n# Expected output:\n# name,age,city,status\n# bob,24,london,eligible - Correction: This should be: bob,24,london,eligible (if age > 20 for example)\n# Corrected expected output (age > 25 AND city == 'london'):\n# name,age,city,status\n# diana,28,london,eligible\n","lang":"python","description":"This quickstart demonstrates a basic ETL pipeline using petl: extracting data from a CSV, filtering rows based on conditions, adding a new field, and loading the result into another CSV file. petl tables are lazy, meaning operations are defined but not executed until data is requested (e.g., when writing to a file or viewing with `look()`).","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.7.17","pypi_latest":"1.7.17","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.7,"avg_import_s":0.24,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.21,"mem_mb":8.9,"disk_size":"20.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.15,"mem_mb":8.9,"disk_size":"21M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.3,"mem_mb":9.5,"disk_size":"22.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.27,"mem_mb":9.5,"disk_size":"23M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.28,"mem_mb":9.3,"disk_size":"14.3M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.27,"mem_mb":9.3,"disk_size":"15M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.28,"mem_mb":9.7,"disk_size":"14.0M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.27,"mem_mb":9.7,"disk_size":"14M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.21,"mem_mb":9,"disk_size":"19.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"petl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.18,"mem_mb":9,"disk_size":"20M"}]}}