{"id":13605550,"url":"https://github.com/finos/ipyregulartable","last_synced_at":"2025-10-28T03:31:18.378Z","repository":{"id":38620332,"uuid":"272550331","full_name":"finos/ipyregulartable","owner":"finos","description":"High performance, editable, stylable datagrids in jupyter and jupyterlab","archived":false,"fork":false,"pushed_at":"2024-02-05T14:45:34.000Z","size":7788,"stargazers_count":99,"open_issues_count":11,"forks_count":14,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-04-13T21:00:34.766Z","etag":null,"topics":["data-table","data-visualization","dataframe","datagrid","ipywidgets","javascript","jupyter","jupyter-notebook","jupyterlab","jupyterlab-extension","notebook","python","table","typescript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/finos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-15T21:45:08.000Z","updated_at":"2024-05-06T20:48:58.310Z","dependencies_parsed_at":"2023-02-18T19:31:29.966Z","dependency_job_id":"98451fc1-e3af-42f5-adf0-b0e653ac7325","html_url":"https://github.com/finos/ipyregulartable","commit_stats":{"total_commits":130,"total_committers":5,"mean_commits":26.0,"dds":"0.25384615384615383","last_synced_commit":"3a7498bfd909683504f3ace62a791bf3567c780d"},"previous_names":["jpmorganchase/ipyregulartable"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finos%2Fipyregulartable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finos%2Fipyregulartable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finos%2Fipyregulartable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finos%2Fipyregulartable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/finos","download_url":"https://codeload.github.com/finos/ipyregulartable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238523990,"owners_count":19486601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["data-table","data-visualization","dataframe","datagrid","ipywidgets","javascript","jupyter","jupyter-notebook","jupyterlab","jupyterlab-extension","notebook","python","table","typescript"],"created_at":"2024-08-01T19:01:00.136Z","updated_at":"2025-10-28T03:31:18.281Z","avatar_url":"https://github.com/finos.png","language":"JavaScript","funding_links":[],"categories":["交互式小部件和可视化","Interactive Widgets \u0026 Visualization"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/img/logo.png\" width=200\u003e\u003c/img\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/finos/ipyregulartable/actions?query=workflow%3A%22Build+Status%22\"\u003e\u003cimg alt=\"Build Status\" src=\"https://github.com/finos/ipyregulartable/workflows/Build%20Status/badge.svg?branch=main\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/finos/ipyregulartable\"\u003e\u003cimg alt=\"Coverage\" src=\"https://codecov.io/gh/finos/ipyregulartable/branch/main/graph/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.python.org/pypi/ipyregulartable\"\u003e\u003cimg alt=\"PyPI Version\" src=\"https://img.shields.io/pypi/v/ipyregulartable.svg?color=brightgreen\u0026style=flat-square\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/package/ipyregulartable\"\u003e\u003cimg alt=\"NPM Version\" src=\"https://img.shields.io/npm/v/ipyregulartable.svg?color=brightgreen\u0026style=flat-square\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/finos/ipyregulartable\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/finos/ipyregulartable?color=brightgreen\u0026style=flat-square\"\u003e\u003c/a\u003e\n\u003ca href=\"https://community.finos.org/docs/governance/software-projects/stages/incubating\"\u003e\u003cimg alt=\"FINOS Incubating\" src=\"https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-incubating.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://mybinder.org/v2/gh/finos/ipyregulartable/main?urlpath=lab\"\u003e\u003cimg alt=\"Binder\" src=\"https://mybinder.org/badge_logo.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# \n\nAn [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) wrapper of [regular-table](https://github.com/finos/regular-table) for Jupyter.\n\n\n## Examples\n### Two Billion Rows\n[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/two_billion.ipynb)\n\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/twobillion.gif)\n\n### Click Events\n[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/click_events.ipynb)\n\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/click_events.gif)\n\n### Edit Events\n[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/edit_events.ipynb)\n\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/edit_events.gif)\n\n### Styling\n[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/styling.ipynb)\n\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/style.gif)\n\n### Pandas Data Model\nFor interactive/streaming sorting/pivoting/aggregation, take a look at [Perspective](https://github.com/finos/perspective), *Streaming pivot visualization via WebAssembly*, which also leverages [`regular-table`](https://github.com/finos/regular-table).\n\n[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/pandas.ipynb)\n\n#### Series\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_series.png)\n\n#### DataFrame\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_df.png)\n\n#### DataFrame - Row Pivots\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_rpivot.png)\n\n#### DataFrame - Column Pivots\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_cpivot.png)\n\n#### DataFrame - Pivot Table\n![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_pt.png)\n\n## Installation\n\n### PyPI\n\n`ipyregulartable` is available on [PyPI](https://pypi.org/project/ipyregulartable/):\n\n```bash\npip install ipyregulartable\n```\n\n### Conda\n\n`ipyregulartable` is also available on [conda-forge](https://github.com/conda-forge/ipyregulartable-feedstock):\n\n```bash\nconda install -c conda-forge ipyregulartable\n```\n\n### Jupyter Server/JupyterLab Extension\n\n```bash\n jupyter labextension install ipyregulartable\n jupyter serverextension enable --py ipyregulartable\n```\n\nIf you are using Jupyter Notebook 5.2 or earlier, you may also need to enable\nthe nbextension:\n```bash\njupyter nbextension enable --py [--sys-prefix|--user|--system] ipyregulartable\n```\n\n## Data Model\nIt is very easy to construct a custom data model. Just implement the abstract methods on the base `DataModel` class.\n\n```python\nclass DataModel(with_metaclass(ABCMeta)):\n    @abstractmethod\n    def editable(self, x, y):\n        '''Given an (x,y) coordinate, return if its editable or not'''\n\n    @abstractmethod\n    def rows(self):\n        '''return total number of rows'''\n\n    @abstractmethod\n    def columns(self):\n        '''return total number of columns'''\n\n    @abstractmethod\n    def dataslice(self, x0, y0, x1, y1):\n        '''get slice of data from (x0, y0) to (x1, y1) inclusive'''\n```\n\nAny `DataModel` object can be provided as the argument to `RegularTableWidget`. Note that `regular-table` may make probing calls of the form (0, 0, 0, 0) to assess data limits. \n\n\n## Development\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n\n## License\n\nThis software is licensed under the Apache 2.0 license. See the\n[LICENSE](LICENSE) and [AUTHORS](AUTHORS) files for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinos%2Fipyregulartable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinos%2Fipyregulartable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinos%2Fipyregulartable/lists"}