{"id":13578472,"url":"https://github.com/rtosholdings/riptable","last_synced_at":"2026-03-17T16:12:09.140Z","repository":{"id":40483485,"uuid":"287614412","full_name":"rtosholdings/riptable","owner":"rtosholdings","description":"64bit multithreaded python data analytics tools for numpy arrays and datasets","archived":false,"fork":false,"pushed_at":"2024-04-25T17:32:47.000Z","size":6312,"stargazers_count":386,"open_issues_count":124,"forks_count":28,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-12-15T20:18:03.933Z","etag":null,"topics":["analytics","dataframes","numpy"],"latest_commit_sha":null,"homepage":"https://riptable.readthedocs.io/en/stable/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rtosholdings.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-14T20:00:32.000Z","updated_at":"2025-12-03T02:22:42.000Z","dependencies_parsed_at":"2023-02-14T09:50:15.336Z","dependency_job_id":"3dc020b6-10bc-4bc7-837c-351058738332","html_url":"https://github.com/rtosholdings/riptable","commit_stats":{"total_commits":423,"total_committers":18,"mean_commits":23.5,"dds":0.6170212765957447,"last_synced_commit":"6bce63749d0d3d9784841fbf0b8bc6152ec4abef"},"previous_names":[],"tags_count":107,"template":false,"template_full_name":null,"purl":"pkg:github/rtosholdings/riptable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtosholdings%2Friptable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtosholdings%2Friptable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtosholdings%2Friptable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtosholdings%2Friptable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rtosholdings","download_url":"https://codeload.github.com/rtosholdings/riptable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtosholdings%2Friptable/sbom","scorecard":{"id":788231,"data":{"date":"2025-08-11","repo":{"name":"github.com/rtosholdings/riptable","commit":"e51b3ddfacee30457673de22d21da8226cc57550"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-package.yml:1","Info: no jobLevel write permissions found"],"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":"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":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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:333: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:341: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:116: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:134: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:163: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:168: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:181: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:231: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:238: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:249: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:299: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:316: update your workflow using https://app.stepsecurity.io/secureworkflow/rtosholdings/riptable/python-package.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:338","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:339","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand 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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":-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":-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":"Vulnerabilities","score":0,"reason":"13 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-29gw-9793-fvw7","Warn: Project is vulnerable to: PYSEC-2015-24 / GHSA-4vwq-x64q-j4cj","Warn: Project is vulnerable to: PYSEC-2017-46 / GHSA-66gw-5xpf-gfp5","Warn: Project is vulnerable to: PYSEC-2015-25 / GHSA-92mr-v722-f48m","Warn: Project is vulnerable to: PYSEC-2022-12 / GHSA-pq7m-3gw7-gq5x","Warn: Project is vulnerable to: PYSEC-2017-47","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52"],"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 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"}}]},"last_synced_at":"2025-08-23T06:41:28.764Z","repository_id":40483485,"created_at":"2025-08-23T06:41:28.764Z","updated_at":"2025-08-23T06:41:28.764Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30626932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T14:16:03.965Z","status":"ssl_error","status_checked_at":"2026-03-17T14:16:03.380Z","response_time":56,"last_error":"SSL_read: 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":["analytics","dataframes","numpy"],"created_at":"2024-08-01T15:01:30.934Z","updated_at":"2026-03-17T16:12:09.098Z","avatar_url":"https://github.com/rtosholdings.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Riptable\n\n![](https://riptable.readthedocs.io/en/stable/_static/riptable_logo.PNG)\n\nAn open-source, 64-bit Python analytics engine for high-performance data analysis with\nmultithreading support. Riptable supports Python 3.10 through 3.12 on 64-bit Linux and\nWindows.\n\nSimilar to Pandas and based on NumPy, Riptable optimizes analyzing large volumes of data\ninteractively, in real time. Riptable can crunch numbers often at 1.5x to 10x the speed\nof NumPy or Pandas.\n\nRiptable achieves maximum speed through the use of:\n\n* **[Vector instrinsics](https://software.intel.com/sites/landingpage/IntrinsicsGuide/)**\nwith hand-rolled loops using [AVX-256](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX2)\nand with [AVX-512](https://en.wikipedia.org/wiki/AVX-512) support coming.\n* **[Parallel computing](https://www.drdobbs.com/go-parallel/article/print?articleId=212903586)**\nwith multiple-thread deployment for large arrays.\n* **[Recycling](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science))**\nwith built-in array garbage collection.\n* **[Hashing](https://en.wikipedia.org/wiki/Hash_function)** and **parallel sorts** for\ncore algorithms.\n\nIntro to Riptable and reference documentation is available at:\n[riptable.readthedocs.io](https://riptable.readthedocs.io/en/stable/index.html)\n\nBasic concepts and classes\n--------------------------\n\n**[FastArray](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_fastarray/index.html)**\nis a subclass of NumPy's `ndarray` that enables built-in multithreaded number crunching.\nAll Scikit routines that expect a NumPy array also accept a `FastArray`.\n\n**[Dataset](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_dataset/index.html)**\nreplaces the Pandas `DataFrame` class and holds NumPy arrays of equal length.\n\n**[Struct](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_struct/index.html)**\nholds a collection of mixed-type data members, with `Dataset` as a subclass.\n\n**[Categorical](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_categorical/index.html)**\nreplaces both the Pandas `DataFrame.groupby()` method and the Pandas `Categorical`\nclass. A Riptable `Categorical` supports multi-key, filterable groupings with the same\nfunctionality of Pandas `groupby` and more.\n\n**[Datetime](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_datetime/index.html)**\nclasses replace most NumPy and Pandas date/time classes. Riptable's `DateTimeNano`,\n`Date`, `TimeSpan`, and `DateSpan` classes have a design that's closer to Java, C++,\nor C# date/time classes.\n\n**[Accum2](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_accum2/index.html)**\nand **[AccumTable](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_accumtable/index.html)**\nenable cross-tabulation functionality.\n\n**[SDS](https://riptable.readthedocs.io/en/stable/autoapi/riptable/rt_sds/index.html)**\nprovides a new file format which can stack multiple datasets in multiple files with\n[zstd](https://github.com/facebook/zstd) compression, threads, and no extra memory\ncopies.\n\nSmall, medium, and large array performance\n------------------------------------------\n\nRiptable is designed for arrays of *all* sizes. For small arrays (\u003c 100 length), low\nprocessing overhead is important. Riptable's `FastArray` is written in hand-coded C and\nprocesses simple arithmetic functions faster than NumPy arrays. For medium arrays\n(\u003c 100,000 length), Riptable has vector-instrinic loops. For large arrays (\u003e= 100,000)\nRiptable knows how to dynamically scale out threading, waking up threads efficiently\nusing a [futex](https://man7.org/linux/man-pages/man7/futex.7.html).\n\nInstall and import Riptable\n---------------------------\n\nCreate a Conda environment and run this command to install Riptable on Windows or Linux:\n\n```\nconda install riptable\n```\n\nImport Riptable in your Python code to access its functions, methods, and classes:\n\n```\nimport riptable as rt\n```\n\n\u003e**Note**: We shorten the name of the Riptable module to `rt` to improve the readability\nof code.\n\nUse NumPy arrays with Riptable\n------------------------------\n\nEasily change between NumPy's `ndarray` and Riptable's `FastArray` without producing a\ncopy of the array.\n\n```\nimport riptable as rt\nimport numpy as np\nrtarray = rt.arange(100)\nnumpyarray = rtarray._np\nfastarray = rt.FastArray(numpyarray)\n```\n\nChange the view of the two instances to confirm that `FastArray` is a subclass of\n`ndarray`.\n\n```\nnumpyarray.view(rt.FastArray)\nfastarray.view(np.ndarray)\nisinstance(fastarray, np.ndarray)\n```\n\nUse Pandas DataFrames with Riptable\n-----------------------------------\n\nConstruct a Riptable `Dataset` directly from a Pandas `DataFrame`.\n\n```\nimport riptable as rt\nimport numpy as np\nimport pandas as pd\ndf = pd.DataFrame({\"intarray\": np.arange(1_000_000), \"floatarray\": np.arange(1_000_000.0)})\nds = rt.Dataset(df)\n```\n\nHow can I trust Riptable calculations?\n--------------------------------------\n\nRiptable has undergone years of development, and dozens of quants at a large financial\nfirm have tested its capabilities. We also provide a full suite of\n[tests](https://github.com/rtosholdings/riptable/tree/master/riptable/tests) to ensure\nthat the modules are functioning as expected. But as with any project, there are still\nbugs and opportunities for improvement, which can be reported using GitHub issues.\n\nHow can Riptable perform calculations faster?\n---------------------------------------------\n\nRiptable was written from day one to handle large data and multithreading using the\nriptide_cpp layer for basic arithmetic functions and algorithms. Many core algorithms\nhave been painstakingly rewritten for multithreading.\n\nHow can I contribute?\n---------------------\n\nThe Riptable engine is another building block for Python data analytics computing, and\nwe welcome help from users and contributors to take it to the next level. As you\nencounter bugs, issues with the documentation, and opportunities for new or improved\nfunctionality, please consider reaching out to the team.\n\nSee the [contributing guide](https://github.com/rtosholdings/riptable/blob/master/docs/CONTRIBUTING.md)\nfor more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtosholdings%2Friptable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frtosholdings%2Friptable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtosholdings%2Friptable/lists"}