{"id":13398290,"url":"https://github.com/ibis-project/ibis","last_synced_at":"2026-10-18T23:09:01.373Z","repository":{"id":30584152,"uuid":"34139230","full_name":"ibis-project/ibis","owner":"ibis-project","description":"the portable Python dataframe library","archived":false,"fork":false,"pushed_at":"2026-10-12T06:49:08.000Z","size":195574,"stargazers_count":6674,"open_issues_count":540,"forks_count":779,"subscribers_count":85,"default_branch":"main","last_synced_at":"2026-10-12T08:33:55.758Z","etag":null,"topics":["bigquery","clickhouse","database","datafusion","duckdb","impala","mssql","mysql","pandas","polars","postgresql","pyarrow","pyspark","python","snowflake","sql","sqlite","trino"],"latest_commit_sha":null,"homepage":"https://ibis-project.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ibis-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","accessibility":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2015-04-17T20:43:46.000Z","updated_at":"2026-10-12T06:46:36.000Z","dependencies_parsed_at":"2026-10-12T08:29:17.796Z","dependency_job_id":null,"html_url":"https://github.com/ibis-project/ibis","commit_stats":{"total_commits":8721,"total_committers":215,"mean_commits":"40.562790697674416","dds":0.585827313381493,"last_synced_commit":"34c465cde2429147beb018fb5fb5b9a0308c6c2b"},"previous_names":["cloudera/ibis","pandas-dev/ibis"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/ibis-project/ibis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibis-project%2Fibis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibis-project%2Fibis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibis-project%2Fibis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibis-project%2Fibis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibis-project","download_url":"https://codeload.github.com/ibis-project/ibis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibis-project%2Fibis/sbom","scorecard":{"id":479149,"data":{"date":"2025-08-11","repo":{"name":"github.com/ibis-project/ibis","commit":"4435c34007999a196e0c884e0e20fc748c787d2d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 21 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":4,"reason":"Found 4/10 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/docs-preview.yml:46","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/ibis-backends-cloud.yml:106","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/pr-title.yml:23"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":6,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci-data.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:40","Info: jobLevel 'packages' permission set to 'read': .github/workflows/codeql.yml:36","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:39","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ibis-backends-cloud.yml:97","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ibis-benchmarks.yml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/labeler.yml:8","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pr-title.yml:12","Info: jobLevel 'contents' permission set to 'read': .github/workflows/pre-release.yml:23","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:16","Info: topLevel 'contents' permission set to 'read': .github/workflows/check-generated-files.yml:29","Warn: no topLevel permission defined: .github/workflows/ci-data.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/create-rotate-key-issue.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/docs-preview.yml:9","Warn: no topLevel permission defined: .github/workflows/ibis-backends-cloud.yml:1","Info: found token with 'none' permissions: .github/workflows/ibis-backends-skip-helper.yml:31","Info: topLevel 'contents' permission set to 'read': .github/workflows/ibis-backends.yml:33","Warn: no topLevel permission defined: .github/workflows/ibis-benchmarks.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/ibis-docs-main.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/ibis-docs-pr.yml:17","Info: topLevel 'contents' permission set to 'read': .github/workflows/ibis-lint.yml:21","Info: found token with 'none' permissions: .github/workflows/ibis-main-skip-helper.yml:27","Info: topLevel 'contents' permission set to 'read': .github/workflows/ibis-main.yml:27","Warn: no topLevel permission defined: .github/workflows/labeler.yml:1","Info: found token with 'none' permissions: .github/workflows/nix-skip-helper.yml:28","Info: topLevel 'contents' permission set to 'read': .github/workflows/nix.yml:29","Warn: no topLevel permission defined: .github/workflows/pr-title.yml:1","Warn: no topLevel permission defined: .github/workflows/pre-release.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/set-milestone-on-issue.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/update-nix-flakes.yml:8"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 10.8.0 not signed: https://api.github.com/repos/ibis-project/ibis/releases/235767776","Warn: release artifact 10.7.0 not signed: https://api.github.com/repos/ibis-project/ibis/releases/235443706","Warn: release artifact 10.6.0 not signed: https://api.github.com/repos/ibis-project/ibis/releases/225592230","Warn: release artifact 10.5.0 not signed: https://api.github.com/repos/ibis-project/ibis/releases/213389532","Warn: release artifact 10.4.0 not signed: https://api.github.com/repos/ibis-project/ibis/releases/208754092","Warn: release artifact 10.8.0 does not have provenance: https://api.github.com/repos/ibis-project/ibis/releases/235767776","Warn: release artifact 10.7.0 does not have provenance: https://api.github.com/repos/ibis-project/ibis/releases/235443706","Warn: release artifact 10.6.0 does not have provenance: https://api.github.com/repos/ibis-project/ibis/releases/225592230","Warn: release artifact 10.5.0 does not have provenance: https://api.github.com/repos/ibis-project/ibis/releases/213389532","Warn: release artifact 10.4.0 does not have provenance: https://api.github.com/repos/ibis-project/ibis/releases/208754092"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/pre-release.yml:19"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/assign.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/assign.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-generated-files.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/check-generated-files.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-generated-files.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/check-generated-files.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-generated-files.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/check-generated-files.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-generated-files.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/check-generated-files.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-generated-files.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/check-generated-files.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-data.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ci-data.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-data.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ci-data.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-rotate-key-issue.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/create-rotate-key-issue.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-rotate-key-issue.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/create-rotate-key-issue.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/create-rotate-key-issue.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/create-rotate-key-issue.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs-preview.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/docs-preview.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:103: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:133: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:139: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:146: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:192: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends-cloud.yml:204: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends-cloud.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:481: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:483: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:495: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:501: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:544: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:590: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:592: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:597: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:609: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:615: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:649: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-backends.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-backends.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-benchmarks.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-benchmarks.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-main.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-docs-pr.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-docs-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-lint.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:116: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:119: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:124: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:144: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:159: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:162: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:167: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:190: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:193: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:199: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:201: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:214: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ibis-main.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/ibis-main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/labeler.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/labeler.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nix.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/nix.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nix.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/nix.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nix.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/nix.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr-title.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pr-title.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr-title.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pr-title.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr-title.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pr-title.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr-title.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pr-title.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr-title.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pr-title.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pre-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-release.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pre-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre-release.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pre-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre-release.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/pre-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/set-milestone-on-issue.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/set-milestone-on-issue.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-nix-flakes.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/update-nix-flakes.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/update-nix-flakes.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/update-nix-flakes.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-nix-flakes.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/update-nix-flakes.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/update-nix-flakes.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/ibis-project/ibis/update-nix-flakes.yml/main?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:1: pin your Docker image by updating mcr.microsoft.com/vscode/devcontainers/python:3.13 to mcr.microsoft.com/vscode/devcontainers/python:3.13@sha256:0aa711e570b306c02946cdda67587ce8c65978dbb65691341cbcfd4854dfcfff","Warn: containerImage not pinned by hash: docker/flink/Dockerfile:2","Warn: containerImage not pinned by hash: docker/postgres/Dockerfile:1","Warn: containerImage not pinned by hash: docker/postgres/Dockerfile:8: pin your Docker image by updating postgis/postgis:17-3.5-alpine to postgis/postgis:17-3.5-alpine@sha256:461df1c0606ddbc6b8d57c0c1887c69aec2c60714bd8f25084fa487bb170e7e5","Warn: pipCommand not pinned by hash: .devcontainer/Dockerfile:9","Warn: pipCommand not pinned by hash: docker/flink/Dockerfile:17","Warn: pipCommand not pinned by hash: .devcontainer/postCreate.sh:4","Warn: pipCommand not pinned by hash: .devcontainer/postCreate.sh:7","Warn: pipCommand not pinned by hash: .github/workflows/check-generated-files.yml:67","Warn: npmCommand not pinned by hash: .github/workflows/docs-preview.yml:86","Warn: pipCommand not pinned by hash: .github/workflows/ibis-docs-main.yml:105","Warn: pipCommand not pinned by hash: .github/workflows/ibis-main.yml:86","Info:   0 out of  56 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of  69 third-party GitHubAction dependencies pinned","Info:   0 out of   4 containerImage dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2024-153 / GHSA-rxff-vr5r-8cj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T16:07:41.290Z","repository_id":30584152,"created_at":"2025-08-19T16:07:41.290Z","updated_at":"2025-08-19T16:07:41.290Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343843146,"owners_count":38221844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-12T02:00:06.297Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bigquery","clickhouse","database","datafusion","duckdb","impala","mssql","mysql","pandas","polars","postgresql","pyarrow","pyspark","python","snowflake","sql","sqlite","trino"],"created_at":"2024-07-30T19:00:21.965Z","updated_at":"2026-10-18T23:08:56.364Z","avatar_url":"https://github.com/ibis-project.png","language":"Python","funding_links":[],"categories":["Python","Machine Learning and AI","Data Management \u0026 Processing","1. Core Frameworks \u0026 Libraries","sqlite","Libraries","Database Clients","Data Analysis"],"sub_categories":["Data Science and Analytics","Database \u0026 Cloud Management"],"readme":"# Ibis\n\n[![Documentation status](https://img.shields.io/badge/docs-docs.ibis--project.org-blue.svg)](http://ibis-project.org)\n[![Project chat](https://img.shields.io/badge/zulip-join_chat-purple.svg?logo=zulip)](https://ibis-project.zulipchat.com)\n[![Anaconda badge](https://anaconda.org/conda-forge/ibis-framework/badges/version.svg)](https://anaconda.org/conda-forge/ibis-framework)\n[![PyPI](https://img.shields.io/pypi/v/ibis-framework.svg)](https://pypi.org/project/ibis-framework)\n[![Build status](https://github.com/ibis-project/ibis/actions/workflows/ibis-main.yml/badge.svg)](https://github.com/ibis-project/ibis/actions/workflows/ibis-main.yml?query=branch%3Amain)\n[![Build status](https://github.com/ibis-project/ibis/actions/workflows/ibis-backends.yml/badge.svg)](https://github.com/ibis-project/ibis/actions/workflows/ibis-backends.yml?query=branch%3Amain)\n[![Codecov branch](https://img.shields.io/codecov/c/github/ibis-project/ibis/main.svg)](https://codecov.io/gh/ibis-project/ibis)\n\n## What is Ibis?\n\nIbis is the portable Python dataframe library:\n\n- Fast local dataframes (via DuckDB by default)\n- Lazy dataframe expressions\n- Interactive mode for iterative data exploration\n- [Compose Python dataframe and SQL code](#python--sql-better-together)\n- Use the same dataframe API for [nearly 20 backends](#backends)\n- Iterate locally and deploy remotely by [changing a single line of code](#portability)\n\nSee the documentation on [\"Why Ibis?\"](https://ibis-project.org/why) to learn more.\n\n## Getting started\n\nYou can `pip install` Ibis with a backend and example data:\n\n```bash\npip install 'ibis-framework[duckdb,examples]'\n```\n\n\u003e 💡 **Tip**\n\u003e\n\u003e See the [installation guide](https://ibis-project.org/install) for more installation options.\n\nThen use Ibis:\n\n```python\n\u003e\u003e\u003e import ibis\n\u003e\u003e\u003e ibis.options.interactive = True\n\u003e\u003e\u003e t = ibis.examples.penguins.fetch()\n\u003e\u003e\u003e t\n┏━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓\n┃ species ┃ island    ┃ bill_length_mm ┃ bill_depth_mm ┃ flipper_length_mm ┃ body_mass_g ┃ sex    ┃ year  ┃\n┡━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩\n│ string  │ string    │ float64        │ float64       │ int64             │ int64       │ string │ int64 │\n├─────────┼───────────┼────────────────┼───────────────┼───────────────────┼─────────────┼────────┼───────┤\n│ Adelie  │ Torgersen │           39.1 │          18.7 │               181 │        3750 │ male   │  2007 │\n│ Adelie  │ Torgersen │           39.5 │          17.4 │               186 │        3800 │ female │  2007 │\n│ Adelie  │ Torgersen │           40.3 │          18.0 │               195 │        3250 │ female │  2007 │\n│ Adelie  │ Torgersen │           NULL │          NULL │              NULL │        NULL │ NULL   │  2007 │\n│ Adelie  │ Torgersen │           36.7 │          19.3 │               193 │        3450 │ female │  2007 │\n│ Adelie  │ Torgersen │           39.3 │          20.6 │               190 │        3650 │ male   │  2007 │\n│ Adelie  │ Torgersen │           38.9 │          17.8 │               181 │        3625 │ female │  2007 │\n│ Adelie  │ Torgersen │           39.2 │          19.6 │               195 │        4675 │ male   │  2007 │\n│ Adelie  │ Torgersen │           34.1 │          18.1 │               193 │        3475 │ NULL   │  2007 │\n│ Adelie  │ Torgersen │           42.0 │          20.2 │               190 │        4250 │ NULL   │  2007 │\n│ …       │ …         │              … │             … │                 … │           … │ …      │     … │\n└─────────┴───────────┴────────────────┴───────────────┴───────────────────┴─────────────┴────────┴───────┘\n\u003e\u003e\u003e g = t.group_by(\"species\", \"island\").agg(count=t.count()).order_by(\"count\")\n\u003e\u003e\u003e g\n┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓\n┃ species   ┃ island    ┃ count ┃\n┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩\n│ string    │ string    │ int64 │\n├───────────┼───────────┼───────┤\n│ Adelie    │ Biscoe    │    44 │\n│ Adelie    │ Torgersen │    52 │\n│ Adelie    │ Dream     │    56 │\n│ Chinstrap │ Dream     │    68 │\n│ Gentoo    │ Biscoe    │   124 │\n└───────────┴───────────┴───────┘\n```\n\n\u003e 💡 **Tip**\n\u003e\n\u003e See the [getting started tutorial](https://ibis-project.org/tutorials/basics) for a full introduction to Ibis.\n\n## Python + SQL: better together\n\nFor most backends, Ibis works by compiling its dataframe expressions into SQL:\n\n```python\n\u003e\u003e\u003e ibis.to_sql(g)\nSELECT\n  \"t1\".\"species\",\n  \"t1\".\"island\",\n  \"t1\".\"count\"\nFROM (\n  SELECT\n    \"t0\".\"species\",\n    \"t0\".\"island\",\n    COUNT(*) AS \"count\"\n  FROM \"penguins\" AS \"t0\"\n  GROUP BY\n    1,\n    2\n) AS \"t1\"\nORDER BY\n  \"t1\".\"count\" ASC\n```\n\nYou can mix SQL and Python code:\n\n```python\n\u003e\u003e\u003e a = t.sql(\"SELECT species, island, count(*) AS count FROM penguins GROUP BY 1, 2\")\n\u003e\u003e\u003e a\n┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓\n┃ species   ┃ island    ┃ count ┃\n┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩\n│ string    │ string    │ int64 │\n├───────────┼───────────┼───────┤\n│ Adelie    │ Torgersen │    52 │\n│ Adelie    │ Biscoe    │    44 │\n│ Adelie    │ Dream     │    56 │\n│ Gentoo    │ Biscoe    │   124 │\n│ Chinstrap │ Dream     │    68 │\n└───────────┴───────────┴───────┘\n\u003e\u003e\u003e b = a.order_by(\"count\")\n\u003e\u003e\u003e b\n┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓\n┃ species   ┃ island    ┃ count ┃\n┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩\n│ string    │ string    │ int64 │\n├───────────┼───────────┼───────┤\n│ Adelie    │ Biscoe    │    44 │\n│ Adelie    │ Torgersen │    52 │\n│ Adelie    │ Dream     │    56 │\n│ Chinstrap │ Dream     │    68 │\n│ Gentoo    │ Biscoe    │   124 │\n└───────────┴───────────┴───────┘\n```\n\nThis allows you to combine the flexibility of Python with the scale and performance of modern SQL.\n\n## Backends\n\nIbis supports nearly 20 backends:\n\n- [Apache DataFusion](https://ibis-project.org/backends/datafusion/)\n- [Apache Druid](https://ibis-project.org/backends/druid/)\n- [Apache Flink](https://ibis-project.org/backends/flink)\n- [Apache Impala](https://ibis-project.org/backends/impala/)\n- [Apache PySpark](https://ibis-project.org/backends/pyspark/)\n- [BigQuery](https://ibis-project.org/backends/bigquery/)\n- [ClickHouse](https://ibis-project.org/backends/clickhouse/)\n- [DuckDB](https://ibis-project.org/backends/duckdb/)\n- [Exasol](https://ibis-project.org/backends/exasol)\n- [MySQL](https://ibis-project.org/backends/mysql/)\n- [Oracle](https://ibis-project.org/backends/oracle/)\n- [Polars](https://ibis-project.org/backends/polars/)\n- [PostgreSQL](https://ibis-project.org/backends/postgresql/)\n- [RisingWave](https://ibis-project.org/backends/risingwave/)\n- [SQL Server](https://ibis-project.org/backends/mssql/)\n- [SQLite](https://ibis-project.org/backends/sqlite/)\n- [Snowflake](https://ibis-project.org/backends/snowflake)\n- [Theseus](https://voltrondata.com/start)\n- [Trino](https://ibis-project.org/backends/trino/)\n\n## How it works\n\nMost Python dataframes are tightly coupled to their execution engine. And many databases only support SQL, with no Python API. Ibis solves this problem by providing a common API for data manipulation in Python, and compiling that API into the backend’s native language. This means you can learn a single API and use it across any supported backend (execution engine).\n\nIbis broadly supports two types of backend:\n\n1. SQL-generating backends\n2. DataFrame-generating backends\n\n![Ibis backend types](./docs/images/backends.png)\n\n## Portability\n\nTo use different backends, you can set the backend Ibis uses:\n\n```python\n\u003e\u003e\u003e ibis.set_backend(\"duckdb\")\n\u003e\u003e\u003e ibis.set_backend(\"polars\")\n\u003e\u003e\u003e ibis.set_backend(\"datafusion\")\n```\n\nTypically, you'll create a connection object:\n\n```python\n\u003e\u003e\u003e con = ibis.duckdb.connect()\n\u003e\u003e\u003e con = ibis.polars.connect()\n\u003e\u003e\u003e con = ibis.datafusion.connect()\n```\n\nAnd work with tables in that backend:\n\n```python\n\u003e\u003e\u003e con.list_tables()\n['penguins']\n\u003e\u003e\u003e t = con.table(\"penguins\")\n```\n\nYou can also read from common file formats like CSV or Apache Parquet:\n\n```python\n\u003e\u003e\u003e t = con.read_csv(\"penguins.csv\")\n\u003e\u003e\u003e t = con.read_parquet(\"penguins.parquet\")\n```\n\nThis allows you to iterate locally and deploy remotely by changing a single line of code.\n\n\u003e 💡 **Tip**\n\u003e\n\u003e Check out [the blog on backend agnostic arrays](https://ibis-project.org/posts/backend-agnostic-arrays/) for one example using the same code across DuckDB and BigQuery.\n\n## Community and contributing\n\nIbis is an open source project and welcomes contributions from anyone in the community.\n\n- Read [the contributing guide](https://github.com/ibis-project/ibis/blob/main/docs/CONTRIBUTING.md).\n- We care about keeping the community welcoming for all. Check out [the code of conduct](https://github.com/ibis-project/ibis/blob/main/CODE_OF_CONDUCT.md).\n- The Ibis project is open sourced under the [Apache License](https://github.com/ibis-project/ibis/blob/main/LICENSE.txt).\n\nJoin our community by interacting on GitHub or chatting with us on [Zulip](https://ibis-project.zulipchat.com/).\n\nFor more information visit https://ibis-project.org/.\n\n## Governance\n\nThe Ibis project is an [independently governed](https://github.com/ibis-project/governance/blob/main/governance.md) open source community project to build and maintain the portable Python dataframe library. Ibis has contributors across a range of data companies and institutions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibis-project%2Fibis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibis-project%2Fibis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibis-project%2Fibis/lists"}