Skip to content

Commit 4fca74b

Browse files
Manul from Pathwayembe-pwjanchorowskiXGendredxtrous
committed
Release 0.7.0
Co-authored-by: Michał Bartoszkiewicz <embe@pathway.com> Co-authored-by: Jan Chorowski <janek@pathway.com> Co-authored-by: Xavier Gendre <xavier@pathway.com> Co-authored-by: Adrian Kosowski <adrian@pathway.com> Co-authored-by: Jakub Kowalski <kuba@pathway.com> Co-authored-by: Sergey Kulik <sergey@pathway.com> Co-authored-by: Mateusz Lewandowski <mateusz@pathway.com> Co-authored-by: Mohamed Malhou <mohamed@pathway.com> Co-authored-by: Krzysztof Nowicki <krzysiek@pathway.com> Co-authored-by: Richard Pelgrim <richard.pelgrim@pathway.com> Co-authored-by: Kamil Piechowiak <kamil@pathway.com> Co-authored-by: Paweł Podhajski <pawel.podhajski@pathway.com> Co-authored-by: Olivier Ruas <olivier@pathway.com> Co-authored-by: Przemysław Uznański <przemek@pathway.com> Co-authored-by: Sebastian Włudzik <sebastian.wludzik@pathway.com> GitOrigin-RevId: 71c8b3e511c0ea3b530530ca733d3b1cb717a198
1 parent 20816a6 commit 4fca74b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1275
-733
lines changed

CHANGELOG.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5+
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
76
## [Unreleased]
87

8+
### Added
9+
- class `Behavior`, a superclass of all behavior classes
10+
- class `ExactlyOnceBehavior` indicating we want to create a `CommonBehavior` that results in each window prodcucing exactly one output (shifted in time by an optional `shift` parameter)
11+
- function `exactly_once_behavior` creating an instance of `ExactlyOnceBehavior`
12+
13+
### Changed
14+
- **BREAKING**: `WindowBehavior` is now called `CommonBehavior`, as it can be also used with interval joins
15+
- **BREAKING**: `window_behavior` is now called `common_behavior`, as it can be also used with interval joins
16+
- Deprecating parameter `keep_queries` in `pw.io.http.rest_connector`. Now `delete_completed_queries` with an opposite meaning should be used instead. The default is still `delete_completed_queries=True` (equivalent to `keep_queries=False`) but it will soon be required to be set explicitly.
17+
918
## [0.6.0] - 2023-11-10
1019

1120
### Added

CONTRIBUTING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ After a pull request is opened it will be reviewed, and merged after
2626
passing continuous integration tests and being accepted by a project or
2727
sub-system maintainer.
2828

29+
We maintain a [Changelog](https://github.com/pathwaycom/pathway/blob/main/CHANGELOG.md) where all notable changes to this project are documented. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
30+
2931
We ask that developers sign our [contributor license
3032
agreement](https://cla-assistant.io/pathwaycom/pathway). The
3133
process of signing the CLA is automated, and you'll be prompted with instructions

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pathway"
3-
version = "0.6.0"
3+
version = "0.7.0"
44
edition = "2021"
55
publish = false
66
rust-version = "1.72.0"

README.md

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,22 @@
1616
alt="follow on Twitter"></a>
1717
<a href="https://linkedin.com/company/pathway">
1818
<img src="https://img.shields.io/badge/pathway-0077B5?style=social&logo=linkedin" alt="follow on LinkedIn"></a>
19+
<br>
20+
<a href="#getting-started">Getting Started</a> |
21+
<a href="#example">Example</a> |
22+
<a href="#performance">Performance</a> |
23+
<a href="#deployment">Deployment</a> |
24+
<a href="#resources">Resources</a> |
25+
<a href="https://pathway.com/developers/">Documentation</a> |
26+
<a href="https://pathway.com/blog/">Blog</a> |
27+
<a href="#get-help">Get Help</a>
1928

2029

2130
</p>
2231

23-
# Pathway
32+
33+
34+
# Pathway<a id="pathway"></a>
2435

2536
[Pathway](https://pathway.com) is an open framework for high-throughput and low-latency real-time data processing. It is used to create Python code which seamlessly combines batch processing, streaming, and real-time API's for LLM apps. Pathway's distributed runtime (🦀-🐍) provides fresh results of your data pipelines whenever new inputs and requests are received.
2637

@@ -37,7 +48,10 @@ In Pathway, data is represented in the form of Tables. Live data streams are als
3748

3849
For any questions, you will find the community and team behind the project [on Discord](https://discord.com/invite/pathway).
3950

40-
## Installation
51+
## Getting started<a id="getting-started"></a>
52+
53+
54+
### Installation<a id="installation"></a>
4155

4256
Pathway requires Python 3.10 or above.
4357

@@ -49,7 +63,7 @@ $ pip install -U pathway
4963

5064
⚠️ Pathway is available on MacOS and Linux. Users of other systems should run Pathway on a Virtual Machine.
5165

52-
## Getting started
66+
### Running Pathway locally<a id="running-pathway-locally"></a>
5367

5468
To use Pathway, you only need to import it:
5569

@@ -78,7 +92,7 @@ $ pathway spawn --threads 3 python main.py
7892
To jumpstart a Pathway project, you can use our [cookiecutter template](https://github.com/pathwaycom/cookiecutter-pathway).
7993

8094

81-
### Example
95+
### Example<a id="example"></a>
8296

8397
```python
8498
import pathway as pw
@@ -99,7 +113,18 @@ pw.run()
99113

100114
Run this example [in Google Colab](https://colab.research.google.com/drive/1kLx5-vKKg0IeQ88ydS-ehtrxSujEZrXK?usp=sharing)!
101115

102-
## Monitoring Pathway
116+
## Deployment<a id="deployment"></a>
117+
118+
Do you feel limited by a local run?
119+
If you want to scale your Pathway application, you may be interested in our Pathway for Enterprise.
120+
Pathway for Enterprise is specially tailored towards end-to-end data processing and real time intelligent analytics.
121+
It scales using distributed computing on the cloud and supports Kubernetes deployment.
122+
123+
You can learn more about the features of Pathway for Enterprise on our [website](https://pathway.com/features).
124+
125+
If you are interested, don't hesitate to [contact us](mailto:contact@pathway.com) to learn more.
126+
127+
## Monitoring Pathway<a id="monitoring-pathway"></a>
103128

104129
Pathway comes with a monitoring dashboard that allows you to keep track of the number of messages sent by each connector and the latency of the system. The dashboard also includes log messages.
105130

@@ -109,18 +134,18 @@ This dashboard is enabled by default; you can disable it by passing `monitoring_
109134

110135
In addition to Pathway's built-in dashboard, you can [use Prometheus](https://pathway.com/developers/tutorials/prometheus-monitoring) to monitor your Pathway application.
111136

112-
## Resources
137+
## Resources<a id="resources"></a>
113138

114-
See also: **[Pathway Developer Resources](https://pathway.com/developers/)** webpage (including API Docs).
139+
See also: **📖 [Pathway Documentation](https://pathway.com/developers/)** webpage (including API Docs).
115140

116-
### Videos about Pathway
141+
### Videos about Pathway<a id="videos-about-pathway"></a>
117142
[▶️ Building an LLM Application without a vector database](https://www.youtube.com/watch?v=kcrJSk00duw) - by [Jan Chorowski](https://scholar.google.com/citations?user=Yc94070AAAAJ) (7min 56s)
118143

119144
[▶️ Linear regression on a Kafka Stream](https://vimeo.com/805069039) - by [Richard Pelgrim](https://twitter.com/richardpelgrim) (7min 53s)
120145

121146
[▶️ Introduction to reactive data processing](https://pathway.com/developers/user-guide/introduction/welcome) - by [Adrian Kosowski](https://scholar.google.com/citations?user=om8De_0AAAAJ) (27min 54s)
122147

123-
### Guides
148+
### Guides<a id="guides"></a>
124149
- [Core concepts of Pathway](https://pathway.com/developers/user-guide/introduction/key-concepts/)
125150
- [Basic operations](https://pathway.com/developers/user-guide/introduction/survival-guide/)
126151
- [Joins](https://pathway.com/developers/user-guide/table-operations/join-manual/)
@@ -132,7 +157,7 @@ See also: **[Pathway Developer Resources](https://pathway.com/developers/)** web
132157
- [API docs](https://pathway.com/developers/api-docs/pathway)
133158
- [Troubleshooting](https://pathway.com/developers/user-guide/introduction/troubleshooting/)
134159

135-
### Tutorials
160+
### Tutorials<a id="tutorials"></a>
136161
- [Linear regression on a Kafka Stream](https://pathway.com/developers/tutorials/linear_regression_with_kafka/) ([video](https://vimeo.com/805069039))
137162
- Joins:
138163
- [Interval joins](https://pathway.com/developers/tutorials/fleet_eta_interval_join/)
@@ -147,26 +172,26 @@ See also: **[Pathway Developer Resources](https://pathway.com/developers/)** web
147172
- [Monitoring Pathway with Prometheus](https://pathway.com/developers/tutorials/prometheus-monitoring/)
148173
- [Time between events in a multi-topic event stream](https://pathway.com/developers/tutorials/event_stream_processing_time_between_occurrences/)
149174

150-
### Showcases
175+
### Showcases<a id="showcases"></a>
151176
- [Realtime Twitter Analysis App](https://pathway.com/developers/showcases/twitter/)
152177
- [Realtime classification with Nearest Neighbors](https://pathway.com/developers/showcases/lsh/lsh_chapter1/)
153178
- [Realtime Fuzzy joins](https://pathway.com/developers/showcases/fuzzy_join/fuzzy_join_chapter1/)
154179

155-
### External and community content
180+
### External and community content<a id="external-and-community-content"></a>
156181
- [Real-time linear regression (Data Engineering Weekly)](https://pathway.com/developers/tutorials/unlocking-data-stream-processing-1/)
157182
- [Realtime server logs monitoring (Data Engineering Weekly)](https://pathway.com/developers/tutorials/unlocking-data-stream-processing-2/)
158183
- [Data enrichment with fuzzy joins (Data Engineering Weekly)](https://pathway.com/developers/tutorials/unlocking-data-stream-processing-3/)
159184
- [▶️ How to do Realtime Twitter Sentiment Analysis in Python (video)](https://www.youtube.com/watch?v=V7T3xHfjE4o)
160185

161186
If you would like to share with us some Pathway-related content, please give an admin a shout on [Discord](https://discord.gg/pathway).
162187

163-
### Manul conventions
188+
### Manul conventions<a id="manul-conventions"></a>
164189

165190
Manuls (aka Pallas's Cats) [are creatures with fascinating habits](https://www.youtube.com/watch?v=rlSTBvViflc). As a tribute to them, we usually read `pw`, one of the most frequent tokens in Pathway code, as: `"paw"`.
166191

167192
<img src="https://d14l3brkh44201.cloudfront.net/PathwayManul.svg" alt="manul" width="50px"></img>
168193

169-
## Performance
194+
## Performance<a id="performance"></a>
170195

171196
Pathway is made to outperform state-of-the-art technologies designed for streaming and batch data processing tasks, including: Flink, Spark, and Kafka Streaming. It also makes it possible to implement a lot of algorithms/UDF's in streaming mode which are not readily supported by other streaming frameworks (especially: temporal joins, iterative graph algorithms, machine learning routines).
172197

@@ -176,29 +201,39 @@ If you are curious, here are [some benchmarks to play with](https://github.com/p
176201

177202
If you try your own benchmarks, please don't hesitate to let us know. We investigate situations in which Pathway is underperforming on par with bugs (i.e., to our knowledge, they shouldn't happen...).
178203

179-
## Coming soon
204+
## Coming soon<a id="coming-soon"></a>
180205

181-
Pathway continues to evolve and gain new capabilities. Here are some exciting new features that we plan to incorporate in the near future:
206+
Here are some features we plan to incorporate in the near future:
182207

183208
- Enhanced monitoring, observability, and data drift detection (integrates with Grafana visualization and other dashboarding tools).
184209
- New connectors: interoperability with Delta Lake and Snowflake data sources.
185210
- Easier connection setup for MongoDB.
186211
- More performant garbage collection.
187212

188-
Stay up to date with the latest developments and news surrounding Pathway on [our blog](https://pathway.com/blog/), or [subscribe to our newsletter].
189213

190214

191-
## Dependencies
215+
## Dependencies<a id="dependencies"></a>
192216

193217
Pathway is made to run in a "clean" Linux/MacOS + Python environment. When installing the pathway package with `pip` (from a wheel), you are likely to encounter a small number of Python package dependencies, such as sqlglot (used in the SQL API) and python-sat (useful for resolving dependencies during compilation). All necessary Rust crates are pre-built; the Rust compiler is not required to install Pathway, unless building from sources. A modified version of Timely/Differential Dataflow (which provides a dataflow assembly layer) is part of this repo.
194218

195-
## License
219+
## License<a id="license"></a>
196220

197221
Pathway is distributed on a [BSL 1.1 License](https://github.com/pathwaycom/pathway/blob/main/LICENSE.txt) which allows for unlimited non-commercial use, as well as use of the Pathway package [for most commercial purposes](https://pathway.com/license/), free of charge. Code in this repository automatically converts to Open Source (Apache 2.0 License) after 4 years. Some [public repos](https://github.com/pathwaycom) which are complementary to this one (examples, libraries, connectors, etc.) are licensed as Open Source, under the MIT license.
198222

199223

200-
## Contribution guidelines
224+
## Contribution guidelines<a id="contribution-guidelines"></a>
201225

202226
If you develop a library or connector which you would like to integrate with this repo, we suggest releasing it first as a separate repo on a MIT/Apache 2.0 license.
203227

204228
For all concerns regarding core Pathway functionalities, Issues are encouraged. For further information, don't hesitate to engage with Pathway's [Discord community](https://discord.gg/pathway).
229+
230+
## Get Help<a id="get-help"></a>
231+
232+
If you have any questions, issues, or just want to chat about Pathway, we're here to help! Feel free to:
233+
- Check out the [documentation](https://pathway.com/developers/) for detailed information.
234+
- [Open an issue on GitHub](https://github.com/pathwaycom/pathway/issues) if you encounter any bugs or have feature requests.
235+
- Join us on [Discord](https://discord.com/invite/pathway) to connect with other users and get support.
236+
- Reach out to us via email at [contact@pathway.com](mailto:contact@pathway.com).
237+
238+
Our team is always happy to help you and ensure that you get the most out of Pathway.
239+
If you would like to better understand how best to use Pathway in your project, please don't hesitate to reach out to us.

integration_tests/webserver/test_rest_connector.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,21 @@ def logic(queries: pw.Table) -> pw.Table:
3232

3333
def target():
3434
time.sleep(5)
35-
requests.post(
35+
r = requests.post(
3636
f"http://127.0.0.1:{port}",
3737
json={"query": "one", "user": "sergey"},
38-
).raise_for_status()
39-
requests.post(
38+
)
39+
r.raise_for_status()
40+
assert r.text == '"ONE"', r.text
41+
r = requests.post(
4042
f"http://127.0.0.1:{port}",
4143
json={"query": "two", "user": "sergey"},
42-
).raise_for_status()
44+
)
45+
r.raise_for_status()
46+
assert r.text == '"TWO"', r.text
4347

4448
queries, response_writer = pw.io.http.rest_connector(
45-
host="127.0.0.1", port=port, schema=InputSchema
49+
host="127.0.0.1", port=port, schema=InputSchema, delete_completed_queries=True
4650
)
4751
responses = logic(queries)
4852
response_writer(responses)
@@ -80,7 +84,11 @@ def target():
8084
).raise_for_status()
8185

8286
queries, response_writer = pw.io.http.rest_connector(
83-
host="127.0.0.1", port=port, schema=InputSchema, route="/endpoint"
87+
host="127.0.0.1",
88+
port=port,
89+
schema=InputSchema,
90+
route="/endpoint",
91+
delete_completed_queries=True,
8492
)
8593
responses = logic(queries)
8694
response_writer(responses)
@@ -118,7 +126,7 @@ def target():
118126
).raise_for_status()
119127

120128
queries, response_writer = pw.io.http.rest_connector(
121-
host="127.0.0.1", port=port, schema=InputSchema
129+
host="127.0.0.1", port=port, schema=InputSchema, delete_completed_queries=True
122130
)
123131
responses = logic(queries)
124132
response_writer(responses)
@@ -151,7 +159,7 @@ def target():
151159
).raise_for_status()
152160

153161
queries, response_writer = pw.io.http.rest_connector(
154-
host="127.0.0.1", port=port, schema=InputSchema, delete_queries=False
162+
host="127.0.0.1", port=port, schema=InputSchema, delete_completed_queries=False
155163
)
156164
response_writer(queries.select(query_id=queries.id, result=pw.this.v))
157165

0 commit comments

Comments
 (0)