{"library":"soda-core","title":"Soda Core","type":"library","description":"Soda Core is an open-source command-line tool and Python library for data quality testing, monitoring, and scanning. It allows users to define data quality checks (e.g., freshness, uniqueness, validity) and execute them against various data sources to identify issues. Version 4.3.0 is current, with frequent updates and a strong focus on community contributions, requiring Python >=3.10.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install soda-core"],"cli":{"name":"soda","version":"usage: soda [-h] {contract,data-source,cloud,request} ..."}},"imports":["from soda.scan import Scan"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"https://soda.io","github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/soda-core/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import os\nimport pandas as pd\nfrom soda.scan import Scan\n\n# Create a dummy CSV file for the example\ncsv_filename = \"sample_data.csv\"\ndf = pd.DataFrame({\n    'id': [1, 2, 3, 4, 5],\n    'value': ['A', 'B', 'C', 'D', 'E'],\n    'status': ['active', 'inactive', 'active', 'active', None]\n})\ndf.to_csv(csv_filename, index=False)\n\n# Define the data source configuration as a string\ndata_source_config = f\"\"\"\n  data_source my_csv_source:\n    type: local_system\n    file_system:\n      type: local\n    path: {os.getcwd()}\n\"\"\"\n\n# Define SodaCL checks as a string\nsodacl_checks = f\"\"\"\n  checks for {csv_filename}:\n    - row_count > 0\n    - missing_count(status) = 1\n    - duplicate_count(id) = 0\n\"\"\"\n\n# Run the Soda Core scan programmatically\nscan = Scan()\nscan.set_verbose(True) # Optional: for more detailed output\nscan.add_configuration_yaml_str(data_source_config)\nscan.add_sodacl_yaml_str(sodacl_checks)\nscan.set_data_source_name(\"my_csv_source\") # Must match the name in data_source_config\nscan.execute_scan()\n\nprint(\"\\n--- Scan Results ---\")\nif scan.has_failures():\n    print(\"Scan completed with failures.\")\nelse:\n    print(\"Scan completed successfully.\")\n\n# Clean up the dummy CSV file\nos.remove(csv_filename)\n","lang":"python","description":"This quickstart demonstrates how to run a programmatic Soda Core scan against a local CSV file. It defines the data source and SodaCL checks as strings, executes the scan, and prints a summary of the results. If you don't have it, install `pandas` (`pip install pandas`) for the CSV creation portion of this example.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-20","installed_version":"4.0.5","pypi_latest":"4.7.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":6.5,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"50.4M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":7.2,"import_time_s":null,"mem_mb":null,"disk_size":"51M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"56.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":6.3,"import_time_s":null,"mem_mb":null,"disk_size":"57M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"47.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":5.2,"import_time_s":null,"mem_mb":null,"disk_size":"49M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"45.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":5.3,"import_time_s":null,"mem_mb":null,"disk_size":"46M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"49.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"soda-core","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":8.6,"import_time_s":null,"mem_mb":null,"disk_size":"51M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"soda-core","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}