def __init__(self, cache, boto_session=None, cloudwatch_namespace=None):
super(S3Meterer, self).__init__(cache)<EOL>if boto_session is None:<EOL><INDENT>import boto3<EOL>self.boto_session = boto3<EOL><DEDENT>else:<EOL><INDENT>self.boto_session = boto_session<EOL><DEDENT>self.cloudwatch_namespace = cloudwatch_namespace<EOL>return<EOL>
S3Meterer(cache, boto_session=None, cloudwatch_namespace=None)
  -> S3Meterer

Create a new S3Meterer, using the specified cache for recording access
patterns and retrieving limits. If boto_session is not None, it is
used to generate new S3 Boto clients. Otherwise, the default Boto3
session is used.

If cloudwatch_namespace is not None, CloudWatch metrics will be emitted
to the specified namespace.