{"action":"created","issue":{"url":"https://api.github.com/repos/boto/botocore/issues/703","labels_url":"https://api.github.com/repos/boto/botocore/issues/703/labels{/name}","comments_url":"https://api.github.com/repos/boto/botocore/issues/703/comments","events_url":"https://api.github.com/repos/boto/botocore/issues/703/events","html_url":"https://github.com/boto/botocore/pull/703","id":113466935,"number":703,"title":"Generalize special casing of pluralized acronyms","user":{"login":"jamesls","id":368057,"avatar_url":"https://avatars.githubusercontent.com/u/368057?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesls","html_url":"https://github.com/jamesls","followers_url":"https://api.github.com/users/jamesls/followers","following_url":"https://api.github.com/users/jamesls/following{/other_user}","gists_url":"https://api.github.com/users/jamesls/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesls/subscriptions","organizations_url":"https://api.github.com/users/jamesls/orgs","repos_url":"https://api.github.com/users/jamesls/repos","events_url":"https://api.github.com/users/jamesls/events{/privacy}","received_events_url":"https://api.github.com/users/jamesls/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-10-26T22:44:10Z","updated_at":"2015-10-26T23:18:02Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/boto/botocore/pulls/703","html_url":"https://github.com/boto/botocore/pull/703","diff_url":"https://github.com/boto/botocore/pull/703.diff","patch_url":"https://github.com/boto/botocore/pull/703.patch"},"body":"Given that this is in the critical path for making API calls,\r\nI did some benchmarking to ensure that this doesn't cause any\r\nserious performance issues.  Short answer is that this seems\r\nacceptable.\r\n\r\nI timed how long it took to xform every single operation and\r\ntop level member name against this branch and the develop\r\nbranch.\r\n\r\nGiven 3034 xform's, I'm seeing:\r\n\r\n```\r\ndev branch   - 0.0930128 seconds averaged over 10 runs of 3034\r\nfix-arn-name - 0.0944845 seconds averaged over 10 runs of 3034\r\n```\r\n\r\nOr in terms of ops/sec:\r\n\r\n```\r\nbefore - 32619.2 ops/sec\r\nafter  - 32111.1 ops/sec\r\n```\r\n\r\nThe reason I think this should be generalized is that some\r\nservices use this pattern for particular types of resources\r\n(mostly ACLs and ARNs), and we'll need to possibly update\r\nour special cases every time we pull in a service update.\r\n\r\nWith this change, we won't need to do this.  I will need\r\nto make a corresponding PR to the AWS CLI to put in\r\nbackward compat shims so we can still support both.\r\n\r\nUsing [this script](https://gist.github.com/jamesls/0d1005415d30d2f9f44a),\r\nthe delta between the develop branch and this PR is:\r\n\r\n```\r\nModel Name                                          xform name\r\n\r\n-OpenIdConnectProviderARNs                          open_id_connect_provider_ar_ns\r\n+OpenIdConnectProviderARNs                          open_id_connect_provider_arns\r\n\r\n-TapeARNs                                           tape_ar_ns\r\n+TapeARNs                                           tape_arns\r\n\r\n-VTLDeviceARNs                                      vtl_device_ar_ns\r\n+VTLDeviceARNs                                      vtl_device_arns\r\n\r\n-VolumeARNs                                         volume_ar_ns\r\n+VolumeARNs                                         volume_arns\r\n\r\n```\r\n\r\n\r\ncc @kyleknap @mtdowling @rayluo @JordonPhillips "},"comment":{"url":"https://api.github.com/repos/boto/botocore/issues/comments/151311627","html_url":"https://github.com/boto/botocore/pull/703#issuecomment-151311627","issue_url":"https://api.github.com/repos/boto/botocore/issues/703","id":151311627,"user":{"login":"mtdowling","id":190930,"avatar_url":"https://avatars.githubusercontent.com/u/190930?v=3","gravatar_id":"","url":"https://api.github.com/users/mtdowling","html_url":"https://github.com/mtdowling","followers_url":"https://api.github.com/users/mtdowling/followers","following_url":"https://api.github.com/users/mtdowling/following{/other_user}","gists_url":"https://api.github.com/users/mtdowling/gists{/gist_id}","starred_url":"https://api.github.com/users/mtdowling/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtdowling/subscriptions","organizations_url":"https://api.github.com/users/mtdowling/orgs","repos_url":"https://api.github.com/users/mtdowling/repos","events_url":"https://api.github.com/users/mtdowling/events{/privacy}","received_events_url":"https://api.github.com/users/mtdowling/received_events","type":"User","site_admin":false},"created_at":"2015-10-26T23:18:02Z","updated_at":"2015-10-26T23:18:02Z","body":"LGTM"}}