Comments (4)
Hey @davidwmartines, thx for opening this issue.
Yes, as you mentioned, the repo is very http-centric, unfortunately :-(
I'm looking forward to having some free time to bring Protobuf support, hopefully, this should bring some clarity regarding adding more formatting options.
Also, we now have CloudEvent abstract base, so technically you can subclass it and add any required properties.
I personally don't have Kafka experience, but curious how this complies with the Cloudevents spec. Need to check.
And yeah, PRs are very welcome
from sdk-python.
OK, that makes sense. I have updated my PR to remove the kafa.CloudEvent class, and the kafka conversion functions should work with AnyCloudEvent (both http and pydantic work, at least in my simple testing). I still need to add some unit tests. I think I like this approach.
from sdk-python.
@xSAVIKx I started exploring this and came up with a draft of something that seems to work.
I'm not sure if it's the right approach, though. For one thing, the kafka.CloudEvent
class I created is basically a copy of the http.CloudEvent
. It seems that if we are creating protocol-specific CloudEvent classes, then we might need a more functional base class inheriting the abstract.CloudEvent
, with the common behavior implemented for the protocol-specific implementations to build upon (if needed).
Alternatively, I could simply not create a kafka.CloudEvent
, with the expectation that consumers would use the http.CloudEvent
. Then the kafka module would then only need to provide the protocol-specific conversion functions. This actually seems more in the spirit of cloudevents - a common, protocol-agnostic event structure, with extensions provided for converting to/from the native protocol formats.
Your thoughts?
(BTW, I researched more and discovered the cloudevents and knative connection, so now the http focus of all this makes more sense.)
from sdk-python.
Yeah, I guess kafka
is just a conversion format and there's no need for extra CloudEvent
class. Pydantic approach is a bit different and the abstract base was created for framework-specific implementations.
from sdk-python.
Related Issues (20)
- Evaluate `cibuildwheels`
- optional pydantic support HOT 7
- `_json_or_string` fails on malformed unicode buffers HOT 2
- Encoded JSON data is not set correctly inside data field HOT 2
- Breaking Changes introduced in version 1.6.0 HOT 3
- Add support for CloudEvents v1.0.2 HOT 1
- nested pydantic cloudevent serialization doesn't work HOT 3
- CloudEvent equality is incorrect on none attributes HOT 4
- Invalid constraint error HOT 2
- Method to_structured can't control NON-ASCII chars HOT 5
- cloudevents.kafka.conversion.from_structured incorrectly handles headers tuple HOT 2
- `cloudevents.kafka.to_binary` checks for a `content-type` attribute, which would not be a valid attribute name HOT 5
- `.json()` unable to serialize datetime elements in `data` payload HOT 3
- Support for pydantic v2 HOT 3
- Support for AMQP 0-9-1 protocol - RabbitMQ HOT 1
- Review SDK maintainers activity as of March 21, 2024 HOT 2
- to_json on a pydantic.CloudEvent does not include extension values HOT 4
- example should be examples in Field()? HOT 2
- to_structured for Kafka does not create ce_ prefixed headers HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdk-python.