|
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