|  | 
| 1 |  | -`csp` ("Composable Stream Processing") is a functional-like reactive | 
| 2 |  | -language that makes time-series stream processing simple to do.  The | 
| 3 |  | -main reactive engine is a C++ based engine which has been exposed to | 
| 4 |  | -python ( other languages may optionally be extended in future versions | 
| 5 |  | -). `csp` applications define a connected graph of components using a | 
| 6 |  | -declarative language (which is essentially python).  Once a graph is | 
| 7 |  | -constructed it can be run using the C++ engine. Graphs are composed of | 
| 8 |  | -some number of "input" adapters, a set of connected calculation "nodes" | 
| 9 |  | -and at the end sent off to "output" adapters. Inputs as well as the | 
| 10 |  | -engine can be seamlessly run in simulation mode using historical input | 
| 11 |  | -adapters or in realtime mode using realtime input adapters. | 
|  | 1 | +<picture> | 
|  | 2 | +  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Point72/csp/main/docs/img/csp-light.png"> | 
|  | 3 | +  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Point72/csp/main/docs/img/csp-dark.png"> | 
|  | 4 | +  <img alt="CSP logo mark - text will be black in light color mode and white in dark color mode." width="50%"/> | 
|  | 5 | +</picture> | 
| 12 | 6 | 
 | 
| 13 |  | -# Contents | 
|  | 7 | +CSP (Composable Stream Processing) is a library for high-performance real-time event stream processing in Python. | 
| 14 | 8 | 
 | 
| 15 |  | -- [0. Introduction](https://github.com/Point72/csp/wiki/0.-Introduction) | 
| 16 |  | -- [1. Generic Nodes (csp.baselib)](<https://github.com/Point72/csp/wiki/1.-Generic-Nodes-(csp.baselib)>) | 
| 17 |  | -- [2. Math Nodes (csp.math)](<https://github.com/Point72/csp/wiki/2.-Math-Nodes-(csp.math)>) | 
| 18 |  | -- [3. Statistics Nodes (csp.stats)](<https://github.com/Point72/csp/wiki/3.-Statistics-Nodes-(csp.stats)>) | 
| 19 |  | -- [4. Random Time Series Generation](<https://github.com/Point72/csp/wiki/4.-Random-Time-Series-Generation-(csp.random)>) | 
| 20 |  | -- [5. Adapters](https://github.com/Point72/csp/wiki/5.-Adapters) | 
| 21 |  | -- [6. Dynamic Graphs](https://github.com/Point72/csp/wiki/6.-Dynamic-Graphs) | 
| 22 |  | -- [7. csp.Struct](https://github.com/Point72/csp/wiki/7.-csp.Struct) | 
| 23 |  | -- [8. Profiler](https://github.com/Point72/csp/wiki/8.-Profiler) | 
| 24 |  | -- [9. Caching](https://github.com/Point72/csp/wiki/9.-Caching) | 
|  | 9 | +## Key Features | 
| 25 | 10 | 
 | 
| 26 |  | -# Installation | 
|  | 11 | +- **Powerful C++ Engine:** Execute the graph using CSP's C++ Graph Processing Engine | 
|  | 12 | +- **Simulation (i.e., offline) mode:** Test workflows on historical data and quickly move to real-time data in deployment | 
|  | 13 | +- **Infrastructure-agnostic:** Connect to any data format or storage database, using built-in (Parquet, Kafka, etc.) or custom adapters | 
|  | 14 | +- **Highly-customizable:** Write your own input and output adapters for any data/storage formats, and real-time adapters for specific workflows | 
|  | 15 | +- **PyData interoperability:** Use your favorite libraries from the Scientific Python Ecosystem for numerical and statistical computations | 
|  | 16 | +- **Functional/declarative style:** Write concise and composable code for stream processing by building graphs in Python | 
| 27 | 17 | 
 | 
| 28 |  | -We ship binary wheels to install `csp`  on MacOS and Linux via `pip`: | 
|  | 18 | +<!-- ## Applications --> | 
| 29 | 19 | 
 | 
| 30 |  | -```bash | 
| 31 |  | -pip install csp | 
| 32 |  | -``` | 
|  | 20 | +## Get Started | 
| 33 | 21 | 
 | 
| 34 |  | -Other platforms will need to see the instructions to [build `csp` from | 
| 35 |  | -source](https://github.com/Point72/csp/wiki/98.-Building-From-Source). | 
|  | 22 | +- [Install CSP](Installation) and [write your first CSP program](First-Steps) | 
|  | 23 | +- Learn more about [nodes](CSP-Node), [graphs](CSP-Graph), and [execution modes](Execution-Modes) | 
|  | 24 | +- Learn to extend CSP with [adapters](Adapters) | 
| 36 | 25 | 
 | 
| 37 |  | -We plan to create conda packages on conda-forge and ship binaries for Windows in | 
| 38 |  | -the near future. | 
|  | 26 | +<!-- - Check out the [examples](Examples) for various CSP features and use cases --> | 
| 39 | 27 | 
 | 
| 40 |  | -# Contributing | 
|  | 28 | +> \[!TIP\] | 
|  | 29 | +> Find relevant docs with GitHub’s search function, use `repo:Point72/csp type:wiki <search terms>` to search the documentation Wiki Pages. | 
| 41 | 30 | 
 | 
| 42 |  | -Contributions are welcome on this project. We distribute under the terms of the [Apache 2.0 license](https://github.com/Point72/csp/blob/main/LICENSE). | 
|  | 31 | +## Community | 
| 43 | 32 | 
 | 
| 44 |  | -For **bug reports** or **small feature requests**, please open an issue on our [issues page](https://github.com/Point72/csp/issues). | 
|  | 33 | +- [Contribute](Contribute) to CSP and help improve the project | 
|  | 34 | +- Read about future plans in the [project roadmap](Roadmap) | 
| 45 | 35 | 
 | 
| 46 |  | -For **questions** or to discuss **larger changes or features**, please use our [discussions page](https://github.com/Point72/csp/discussions). | 
|  | 36 | +## License | 
| 47 | 37 | 
 | 
| 48 |  | -For **contributions**, please see our [developer documentation](https://github.com/Point72/csp/wiki/99.-Developer). We have `help wanted` and `good first issue` tags on our issues page, so these are a great place to start. | 
| 49 |  | - | 
| 50 |  | -For **documentation updates**, make PRs that update the pages in `/docs/wiki`. The documentation is pushed to the GitHub wiki automatically through a GitHub workflow. Note that direct updates to this wiki will be overwritten. | 
| 51 |  | - | 
| 52 |  | -# Roadmap | 
| 53 |  | - | 
| 54 |  | -We do not have a formal roadmap, but we're happy to discuss features, improvements, new adapters, etc, in our [discussions area](https://github.com/Point72/csp/discussions). Here are some high level items we hope to accomplish in the next few months: | 
| 55 |  | - | 
| 56 |  | -- Support `clang` compiler and full MacOS support ([#33](https://github.com/Point72/csp/issues/33) / [#132](https://github.com/Point72/csp/pull/132)) | 
| 57 |  | -- Support `msvc` compiler and full Windows support ([#109](https://github.com/Point72/csp/issues/109)) | 
| 58 |  | -- Establish a better pattern for adapters ([#165](https://github.com/Point72/csp/discussions/165)) | 
| 59 |  | - | 
| 60 |  | -## Adapters and Extensions | 
| 61 |  | - | 
| 62 |  | -- Redis Pub/Sub Adapter with [Redis-plus-plus](https://github.com/sewenew/redis-plus-plus) ([#61](https://github.com/Point72/csp/issues/61)) | 
| 63 |  | -- C++-based websocket adapter | 
| 64 |  | -  - Client adapter in [#152](https://github.com/Point72/csp/pull/152) | 
| 65 |  | -- C++-based HTTP/SSE adapter | 
| 66 |  | -- Add support for other graph viewers, including interactive / standalone / Jupyter | 
| 67 |  | - | 
| 68 |  | -## Other Open Source Projects | 
| 69 |  | - | 
| 70 |  | -- `csp-gateway`: Application development framework, built with [FastAPI](https://fastapi.tiangolo.com) and [Perspective](https://github.com/finos/perspective). This is a library we have built internally at Point72 on top of `csp` that we hope to open source later in 2024. It allows for easier construction of modular `csp` applications, along with a pluggable REST/WebSocket API and interactive UI. | 
|  | 38 | +CSP is licensed under the Apache 2.0 license. See the [LICENSE](https://github.com/Point72/csp/blob/main/LICENSE) file for details. | 
0 commit comments