{"id":34030725,"url":"https://github.com/optimdata/pybana","last_synced_at":"2026-04-08T13:32:16.116Z","repository":{"id":35643575,"uuid":"218537181","full_name":"optimdata/pybana","owner":"optimdata","description":"Python client for kibana. Provide ORM \u0026 vega rendering of visualizations","archived":false,"fork":false,"pushed_at":"2026-04-02T15:37:56.000Z","size":331,"stargazers_count":6,"open_issues_count":7,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-03T01:18:56.838Z","etag":null,"topics":["kibana","kibana-visualization","vega","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/optimdata.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-10-30T13:44:02.000Z","updated_at":"2026-03-25T16:28:23.000Z","dependencies_parsed_at":"2024-03-06T10:29:33.887Z","dependency_job_id":null,"html_url":"https://github.com/optimdata/pybana","commit_stats":{"total_commits":102,"total_committers":5,"mean_commits":20.4,"dds":"0.37254901960784315","last_synced_commit":"01b798b0d9c04a881105b0bacb174b643ca54181"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/optimdata/pybana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimdata%2Fpybana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimdata%2Fpybana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimdata%2Fpybana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimdata%2Fpybana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/optimdata","download_url":"https://codeload.github.com/optimdata/pybana/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimdata%2Fpybana/sbom","scorecard":{"id":711238,"data":{"date":"2025-08-11","repo":{"name":"github.com/optimdata/pybana","commit":"072ae69630761454766dfec654873285c9891cbd"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"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":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":0,"reason":"Found 0/26 approved changesets -- score normalized to 0","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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 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"}}]},"last_synced_at":"2025-08-22T08:15:22.813Z","repository_id":35643575,"created_at":"2025-08-22T08:15:22.814Z","updated_at":"2025-08-22T08:15:22.814Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31558381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["kibana","kibana-visualization","vega","visualization"],"created_at":"2025-12-13T18:03:18.588Z","updated_at":"2026-04-08T13:32:16.107Z","avatar_url":"https://github.com/optimdata.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pybana\r\n\r\n[![Build Status](https://travis-ci.org/optimdata/pybana.svg?branch=master)](https://travis-ci.org/optimdata/pybana)\r\n[![codecov](https://codecov.io/gh/optimdata/pybana/branch/master/graph/badge.svg)](https://codecov.io/gh/optimdata/pybana)\r\n![](https://img.shields.io/badge/python-3.6-brightgreen.svg)\r\n\r\n- [Github](https://github.com/optimdata/pybana)\r\n- [Documentation](https://pybana.readthedocs.io/en/latest/index.html)\r\n\r\n# 🚧 CAREFUL! WORK IN PROGRESS 🚧\r\n\r\n## What is this?\r\n\r\nThis is a kibana client written in python. It provides two kind of utilities\r\n- **An ORM layer**. The goal is to ease the manipulation of kibana objects such as `index-pattern`, `visualization`, `dashboard`. This ORM provides:\r\n  - Modeling using [elasticsearch_dsl](https://elasticsearch-dsl.readthedocs.io/).\r\n  - helpers to extract useful information from kibana objects (ex: the index pattern associated to a visualization).\r\n  - reverse relationships between index-pattern \u0026 visualizations, visualizations \u0026 dashboards.\r\n- **A translation layer**. The goal is to mimic kibana behaviour in terms of data fetching and visualization rendering. Thus, there are two types of translators:\r\n  - **elastic**. It transforms a kibana `visualization` definition into an elasticsearch query.\r\n  - **vega**. It transforms a kibana `visualization` and data fetched into a [vega](https://vega.github.io/) spec.\r\n\r\n## Why?\r\n\r\nThe ORM was implemented to ease the automatic creation/update of kibana objects. For instance:\r\n- If you've added an access-control layer on top of kibana to handle multi-tenancy, you may want to automate the creation of kibana indexes and the default index-pattern.\r\n- If an `index-pattern` correspond to a table defined somewhere else (like a sql table), you may want to automate the creation of `index-pattern`.\r\n- If a `dashboard` is defined in another database (like a sql db), you may want to delete the kibana object if the sql object is deleted.\r\n\r\nThe translation layer was implemented to progressively get rid of kibana. Even if kibana is a fantastic tool, it's more meant for internal use than for an integration in another application.\r\n\r\nThe elastic translator aims to generate almost identical queries to elasticsearch as kibana.\r\n\r\nThe vega translator tries to provide an equivalent in vega of kibana visualisation. Currently, it supports a limited set of options. Vega was chosen as it provide a complex but almost exhaustive visualization grammar. Vega'sapi allows the rendering of visualizations both on the backend and frontend and has bridges with the main js frameworks (react, vue…).\r\n\r\n## Roadmap\r\n\r\n- ORM\r\n  - Automatic creation of index pattern\r\n- Elastic translator:\r\n  - Handle more bucket type: ipv4, significatn terms etc\r\n  - Handle more metrics: top hit, sibling etc\r\n- Vega translator:\r\n  - Handle more visualization types (gauge, metric, map etc)\r\n- Versions\r\n  - For now, only elk stack 6.7.1 is handled.\r\n\r\n## License\r\n\r\nLicensed under MIT license.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimdata%2Fpybana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foptimdata%2Fpybana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimdata%2Fpybana/lists"}