boto/botocore — pull request #230 by jamesls (2014-02-13 18:32:56+00:00)
Title: Special case several CamelCase->SnakeCase conversions

Our algorithm for converting CamelCase to snake_case is wrong for a few special cases:

```
SwapEnvironmentCNAMEs – swap_environment_cnam_es
CreateCachediSCSIVolume – create_cachedi_scsi_volume
DescribeCachediSCSIVolumes - describe_cachedi_scsi_volumes
DescribeStorediSCSIVolumes - describe_storedi_scsi_volumes
CreateStorediSCSIVolume – create_storedi_scsi_volume
```

Rather than add special casing logic into the actual `xform_name` function, I instead introduced a cache, and prepopulated the cache with these special cases.

This will actually speed up performance for repeated cases, and for the CLI it's no slower.

Note that this cache is uncapped, but evaluating the difference in memory before/after this change, caching every single service/operation/parameter resulted in an additional 260K, so I don't think this will be an issue.

For CLI compat, we can reintroduce the wrong/original casings as aliases and mark them as undocumented, but that would be a separate pull request to the CLI.