Skip to content

Commit ac3f9d2

Browse files
authored
Merge pull request #2 from sotaog/bugfix/table_initialization_for_put_batch
Fix issue with table initialization when put_batch is used in multipr…
2 parents 341cedb + cddc098 commit ac3f9d2

5 files changed

Lines changed: 12 additions & 15 deletions

File tree

dynamodb_timeseries/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
22

3-
from .constants import *
43
from .tableresolver import DAILY, HOURLY, MONTHLY, WEEKLY, YEARLY, TableResolver
54
from .timeseries import TimeSeries

dynamodb_timeseries/constants.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

dynamodb_timeseries/timeseries.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from multiprocessing import Pool
77
from typing import List, Union
88

9-
from dynamodb_timeseries import exceptions, DEFAULT_REGIONS
10-
from dynamodb_timeseries.dynamodb import create_table, list_tables, put, put_batch, query
9+
from dynamodb_timeseries import exceptions
10+
from dynamodb_timeseries.dynamodb import CLIENT, create_table, list_tables, put, put_batch, query
1111
from dynamodb_timeseries.tableresolver import MONTHLY, TableResolver
1212

1313
logger = logging.getLogger(__name__)
@@ -30,13 +30,13 @@ def __get_regions():
3030
regions = os.getenv('DYNAMODB_TIMESERIES_REGIONS')
3131
if regions:
3232
return [r for r in regions.split(',')]
33-
return DEFAULT_REGIONS
33+
return [CLIENT.meta.region_name]
3434

35-
def __init__(self, table_name_prefix: str, interval: int = MONTHLY, regions: List[str] = None):
35+
def __init__(self, table_name_prefix: str, interval: int = MONTHLY, regions: List[str] = []):
3636
self.table_name_prefix = table_name_prefix
3737
self.__tables = list_tables(table_name_prefix)
3838
self.tr = TableResolver(table_name_prefix, interval=interval)
39-
if regions is None:
39+
if not regions:
4040
regions = self.__get_regions()
4141
self.regions = regions
4242

@@ -106,8 +106,6 @@ def put_batch(self, records):
106106
tables[table_name] = []
107107
tables[table_name].append(r)
108108
for table_name, records in tables.items():
109-
try:
110-
put_batch(table_name, records)
111-
except exceptions.TableDoesNotExistException:
109+
if table_name not in self.__tables:
112110
self.__create_table(table_name)
113-
put_batch(table_name, records)
111+
put_batch(table_name, records)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
setup(
1111
name='python-dynamodb-timeseries',
12-
version='0.2.0',
12+
version='0.2.1',
1313
description='Library for working with timeseries data on dynamodb',
1414
long_description=README,
1515
long_description_content_type="text/markdown",

tests/test_timeseries.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
import unittest
33
from unittest.mock import Mock, patch
44

5-
from dynamodb_timeseries import TimeSeries, DEFAULT_REGIONS, MONTHLY, HOURLY
5+
from dynamodb_timeseries import TimeSeries, MONTHLY, HOURLY
66

77

88
class TestTimeseries(unittest.TestCase):
99
@patch('dynamodb_timeseries.dynamodb.CLIENT')
10-
def test_init(self, _client):
10+
def test_init(self, client):
1111
ts = TimeSeries('testing')
12+
client.meta.region_name.return_value = 'us-west-2'
1213
self.assertEqual(ts.table_name_prefix, 'testing')
13-
self.assertEqual(ts.regions, DEFAULT_REGIONS)
14+
self.assertEqual(ts.regions, ['us-west-2'])
1415
self.assertEqual(ts.tr.interval, MONTHLY)
1516

1617
@patch('dynamodb_timeseries.dynamodb.CLIENT')

0 commit comments

Comments
 (0)