{"action":"created","issue":{"url":"https://api.github.com/repos/hynek/attrs/issues/88","repository_url":"https://api.github.com/repos/hynek/attrs","labels_url":"https://api.github.com/repos/hynek/attrs/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/hynek/attrs/issues/88/comments","events_url":"https://api.github.com/repos/hynek/attrs/issues/88/events","html_url":"https://github.com/hynek/attrs/pull/88","id":176181429,"number":88,"title":"Feature/fields properties","user":{"login":"Tinche","id":1909233,"avatar_url":"https://avatars.githubusercontent.com/u/1909233?v=3","gravatar_id":"","url":"https://api.github.com/users/Tinche","html_url":"https://github.com/Tinche","followers_url":"https://api.github.com/users/Tinche/followers","following_url":"https://api.github.com/users/Tinche/following{/other_user}","gists_url":"https://api.github.com/users/Tinche/gists{/gist_id}","starred_url":"https://api.github.com/users/Tinche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tinche/subscriptions","organizations_url":"https://api.github.com/users/Tinche/orgs","repos_url":"https://api.github.com/users/Tinche/repos","events_url":"https://api.github.com/users/Tinche/events{/privacy}","received_events_url":"https://api.github.com/users/Tinche/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-10T14:08:19Z","updated_at":"2016-09-10T14:10:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/hynek/attrs/pulls/88","html_url":"https://github.com/hynek/attrs/pull/88","diff_url":"https://github.com/hynek/attrs/pull/88.diff","patch_url":"https://github.com/hynek/attrs/pull/88.patch"},"body":"You're gonna loooove the implementation of this.\r\n\r\nWell, you might actually love the API.\r\n\r\n```\r\n>>> from attr import Factory, fields\r\n>>> fields(Factory)\r\n(Attribute(name='factory', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None),)\r\n>>> fields(Factory).factory\r\nAttribute(name='factory', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None)\r\n>>>\r\n```\r\nThe way this is done is, for each attrs class we generate a tiny subclass of tuple. The subclass basically looks like this:\r\n```\r\nclass FactoryAttributes(tuple):\r\n    factory = property(itemgetter(0))\r\n```\r\nThat's all.\r\n\r\nNo docs/changelog or anything until you say you like it."},"comment":{"url":"https://api.github.com/repos/hynek/attrs/issues/comments/246113787","html_url":"https://github.com/hynek/attrs/pull/88#issuecomment-246113787","issue_url":"https://api.github.com/repos/hynek/attrs/issues/88","id":246113787,"user":{"login":"codecov-io","id":8655789,"avatar_url":"https://avatars.githubusercontent.com/u/8655789?v=3","gravatar_id":"","url":"https://api.github.com/users/codecov-io","html_url":"https://github.com/codecov-io","followers_url":"https://api.github.com/users/codecov-io/followers","following_url":"https://api.github.com/users/codecov-io/following{/other_user}","gists_url":"https://api.github.com/users/codecov-io/gists{/gist_id}","starred_url":"https://api.github.com/users/codecov-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codecov-io/subscriptions","organizations_url":"https://api.github.com/users/codecov-io/orgs","repos_url":"https://api.github.com/users/codecov-io/repos","events_url":"https://api.github.com/users/codecov-io/events{/privacy}","received_events_url":"https://api.github.com/users/codecov-io/received_events","type":"User","site_admin":false},"created_at":"2016-09-10T14:10:41Z","updated_at":"2016-09-10T14:10:41Z","body":"## [Current coverage](https://codecov.io/gh/hynek/attrs/pull/88?src=pr) is 100% (diff: 100%)\n> Merging [#88](https://codecov.io/gh/hynek/attrs/pull/88?src=pr) into [master](https://codecov.io/gh/hynek/attrs/branch/master?src=pr) will not change coverage\n\n\n```diff\n@@           master   #88   diff @@\n===================================\n  Files           8     8          \n  Lines         428   443    +15   \n  Methods         0     0          \n  Messages        0     0          \n  Branches       94    98     +4   \n===================================\n+ Hits          428   443    +15   \n  Misses          0     0          \n  Partials        0     0          \n```\n\n> Powered by [Codecov](https://codecov.io?src=pr). Last update [dcfbb7b...3581a57](https://codecov.io/gh/hynek/attrs/compare/dcfbb7b955a85aec77a0f1a0b20d2bee8ac97653...3581a5742f79764d292228a144c8c40bed5c46b9?src=pr)"}}
{"actor":{"display_login":"codecov-io"}}