{"action":"created","issue":{"url":"https://api.github.com/repos/cloudevents/sdk-python/issues/1","repository_url":"https://api.github.com/repos/cloudevents/sdk-python","labels_url":"https://api.github.com/repos/cloudevents/sdk-python/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/cloudevents/sdk-python/issues/1/comments","events_url":"https://api.github.com/repos/cloudevents/sdk-python/issues/1/events","html_url":"https://github.com/cloudevents/sdk-python/pull/1","id":381373215,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMxMzYwOTk5","number":1,"title":"Initial release: CloudEvents Python SDK 0.0.1a0","user":{"login":"denismakogon","id":3034091,"node_id":"MDQ6VXNlcjMwMzQwOTE=","avatar_url":"https://avatars1.githubusercontent.com/u/3034091?v=4","gravatar_id":"","url":"https://api.github.com/users/denismakogon","html_url":"https://github.com/denismakogon","followers_url":"https://api.github.com/users/denismakogon/followers","following_url":"https://api.github.com/users/denismakogon/following{/other_user}","gists_url":"https://api.github.com/users/denismakogon/gists{/gist_id}","starred_url":"https://api.github.com/users/denismakogon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denismakogon/subscriptions","organizations_url":"https://api.github.com/users/denismakogon/orgs","repos_url":"https://api.github.com/users/denismakogon/repos","events_url":"https://api.github.com/users/denismakogon/events{/privacy}","received_events_url":"https://api.github.com/users/denismakogon/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-11-15T22:50:24Z","updated_at":"2018-11-15T23:00:27Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/cloudevents/sdk-python/pulls/1","html_url":"https://github.com/cloudevents/sdk-python/pull/1","diff_url":"https://github.com/cloudevents/sdk-python/pull/1.diff","patch_url":"https://github.com/cloudevents/sdk-python/pull/1.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/cloudevents/sdk-python/issues/comments/439221548","html_url":"https://github.com/cloudevents/sdk-python/pull/1#issuecomment-439221548","issue_url":"https://api.github.com/repos/cloudevents/sdk-python/issues/1","id":439221548,"node_id":"MDEyOklzc3VlQ29tbWVudDQzOTIyMTU0OA==","user":{"login":"denismakogon","id":3034091,"node_id":"MDQ6VXNlcjMwMzQwOTE=","avatar_url":"https://avatars1.githubusercontent.com/u/3034091?v=4","gravatar_id":"","url":"https://api.github.com/users/denismakogon","html_url":"https://github.com/denismakogon","followers_url":"https://api.github.com/users/denismakogon/followers","following_url":"https://api.github.com/users/denismakogon/following{/other_user}","gists_url":"https://api.github.com/users/denismakogon/gists{/gist_id}","starred_url":"https://api.github.com/users/denismakogon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denismakogon/subscriptions","organizations_url":"https://api.github.com/users/denismakogon/orgs","repos_url":"https://api.github.com/users/denismakogon/repos","events_url":"https://api.github.com/users/denismakogon/events{/privacy}","received_events_url":"https://api.github.com/users/denismakogon/received_events","type":"User","site_admin":false},"created_at":"2018-11-15T23:00:27Z","updated_at":"2018-11-15T23:00:27Z","author_association":"NONE","body":"There are lots of things to do:\r\n1. Docs\r\n2. More tests\r\n\r\nSo, the design is pretty straightforward (looks quite similar to Go SDK). However, there's one thing about this particular implementation: in Python, there's no widely used HTTP framework from the standard library, so, there's no way to make HTTP converters here to take an HTTP request object and work with that (which is obviously possible in Go). \r\n\r\nI decided to stick with parts of an HTTP request:\r\n - headers (a `dict` like object, most of frameworks ship headers as a `dict` which is good for this implementation because it's versatile)\r\n - body (Python stream object, compliant to `io.IO` interface, this might be unusual to most of the dummy frameworks because they coerce data beforehand and do not allow you to work with raw stream)\r\n\r\nYet one difference is that `HTTPMarshaller.ToRequest` accepts `data_marshaller` (callable), this particular method is used to turn the data into a stream. The idea here is that there's no point for a library to care about data coercing, let it be the user's responsibility.\r\n\r\nIf you have any question so far, hit me in slack."}}
{"actor":{"display_login":"denismakogon"}}