def _get_connection(cls) -> TableConnection: """ Returns a (cached) connection """ if not hasattr(cls, "Meta"): raise AttributeError( 'As of v1.0 PynamoDB Models require a `Meta` class.\n' 'Model: {}.{}\n' 'See https://pynamodb.readthedocs.io/en/latest/release_notes.html\n'.format( cls.__module__, cls.__name__, ), ) elif not hasattr(cls.Meta, "table_name") or cls.Meta.table_name is None: raise AttributeError( 'As of v1.0 PynamoDB Models must have a table_name\n' 'Model: {}.{}\n' 'See https://pynamodb.readthedocs.io/en/latest/release_notes.html'.format( cls.__module__, cls.__name__, ), ) if cls._connection is None: cls._connection = TableConnection(cls.Meta.table_name, region=cls.Meta.region, host=cls.Meta.host, connect_timeout_seconds=cls.Meta.connect_timeout_seconds, read_timeout_seconds=cls.Meta.read_timeout_seconds, max_retry_attempts=cls.Meta.max_retry_attempts, base_backoff_ms=cls.Meta.base_backoff_ms, max_pool_connections=cls.Meta.max_pool_connections, extra_headers=cls.Meta.extra_headers, aws_access_key_id=cls.Meta.aws_access_key_id, aws_secret_access_key=cls.Meta.aws_secret_access_key, aws_session_token=cls.Meta.aws_session_token) return cls._connection
def _get_connection(cls): """ Append attributes to Metaclass if they are defined in The Flask-Philo-Core configuration object. """ env = resolv_environment() setattr(cls.Meta, HOST, env.get(HOST)) if not hasattr(cls.Meta, REGION): setattr(cls.Meta, REGION, env.get('AWS_REGION')) if not hasattr(cls.Meta, 'request_timeout_seconds'): setattr(cls.Meta, 'request_timeout_seconds', env.get('request_timeout_seconds')) if not hasattr(cls.Meta, 'base_backoff_ms'): setattr(cls.Meta, 'base_backoff_ms', env.get('base_backoff_ms')) if not hasattr(cls.Meta, 'max_retry_attempts'): setattr(cls.Meta, 'max_retry_attempts', env.get('max_retry_attempts')) if not hasattr(cls.Meta, 'aws_access_key_id'): setattr(cls.Meta, 'aws_access_key_id', env.get('AWS_ACCESS_KEY_ID')) elif not cls.Meta.aws_access_key_id: setattr(cls.Meta, 'aws_access_key_id', env.get('AWS_ACCESS_KEY_ID')) if not hasattr(cls.Meta, 'aws_secret_access_key'): setattr(cls.Meta, 'aws_secret_access_key', env.get('AWS_SECRET_ACCESS_KEY')) elif not cls.Meta.aws_secret_access_key: setattr(cls.Meta, 'aws_secret_access_key', env.get('AWS_SECRET_ACCESS_KEY')) if not hasattr(cls.Meta, 'session_cls'): setattr(cls.Meta, 'session_cls', env.get('session_cls')) cls._connection = TableConnection( cls.Meta.table_name, region=cls.Meta.region, host=cls.Meta.host, session_cls=cls.Meta.session_cls, request_timeout_seconds=cls.Meta.request_timeout_seconds, max_retry_attempts=cls.Meta.max_retry_attempts, base_backoff_ms=cls.Meta.base_backoff_ms, aws_access_key_id=cls.Meta.aws_access_key_id, aws_secret_access_key=cls.Meta.aws_secret_access_key) return cls._connection
def _get_connection(cls): """ Returns a (cached) connection """ if not hasattr(cls, "Meta") or cls.Meta.table_name is None: raise AttributeError( """As of v1.0 PynamoDB Models require a `Meta` class. See http://pynamodb.readthedocs.org/en/latest/release_notes.html""" ) if cls._connection is None: cls._connection = TableConnection(cls.Meta.table_name, region=cls.Meta.region, host=cls.Meta.host) return cls._connection
def _get_connection(cls) -> TableConnection: """ Returns a (cached) connection """ if not hasattr(cls, "Meta"): raise AttributeError( 'As of v1.0 PynamoDB Models require a `Meta` class.\n' 'Model: {}.{}\n' 'See https://pynamodb.readthedocs.io/en/latest/release_notes.html\n' .format( cls.__module__, cls.__name__, ), ) elif not hasattr(cls.Meta, "table_name") or cls.Meta.table_name is None: raise AttributeError( 'As of v1.0 PynamoDB Models must have a table_name\n' 'Model: {}.{}\n' 'See https://pynamodb.readthedocs.io/en/latest/release_notes.html' .format( cls.__module__, cls.__name__, ), ) # For now we just check that the connection exists and (in the case of model inheritance) # points to the same table. In the future we should update the connection if any of the attributes differ. if cls._connection is None or cls._connection.table_name != cls.Meta.table_name: cls._connection = TableConnection( cls.Meta.table_name, region=cls.Meta.region, host=cls.Meta.host, connect_timeout_seconds=cls.Meta.connect_timeout_seconds, read_timeout_seconds=cls.Meta.read_timeout_seconds, max_retry_attempts=cls.Meta.max_retry_attempts, base_backoff_ms=cls.Meta.base_backoff_ms, max_pool_connections=cls.Meta.max_pool_connections, extra_headers=cls.Meta.extra_headers, aws_access_key_id=cls.Meta.aws_access_key_id, aws_secret_access_key=cls.Meta.aws_secret_access_key, aws_session_token=cls.Meta.aws_session_token) return cls._connection