66from carousel .contrib .readers import (
77 ArgumentReader , DjangoModelReader , HDF5Reader
88)
9- from carousel .core .data_sources import DataSource
9+ from carousel .core .data_sources import DataSource , DataParameter
1010from datetime import datetime
1111from carousel .core import UREG
1212from django .db import models
@@ -91,7 +91,8 @@ class MyApp(AppConfig):
9191
9292class MyModel (models .Model ):
9393 """
94- Django model for testing :class:`~carousel.contrib.readers.DjangoModelReader`.
94+ Django model for testing
95+ :class:`~carousel.contrib.readers.DjangoModelReader`.
9596 """
9697 air_temp = models .FloatField ()
9798 latitude = models .FloatField ()
@@ -108,8 +109,8 @@ class Meta:
108109
109110def test_arg_reader ():
110111 """
111- Test :class:`~carousel.contrib.readers.ArgumentReader` is instantiated and can
112- load argument data units and values correctly.
112+ Test :class:`~carousel.contrib.readers.ArgumentReader` is instantiated and
113+ can load argument data units and values correctly.
113114
114115 :return: arg reader and data
115116 :raises: AssertionError
@@ -122,11 +123,11 @@ def test_arg_reader():
122123 air_temp = TAIR
123124 location = {'latitude' : LAT , 'longitude' : LON , 'timezone' : TZ }
124125 parameters = {
125- 'pvmodule' : {'argpos' : 0 },
126- 'air_temp' : {'units' : 'celsius' , 'argpos' : 1 },
127- 'latitude' : {'units' : 'degrees' },
128- 'longitude' : {'units' : 'degrees' },
129- 'timezone' : {'units' : 'hours' }
126+ 'pvmodule' : {'extras' : { ' argpos' : 0 } },
127+ 'air_temp' : {'units' : 'celsius' , 'extras' : { ' argpos' : 1 } },
128+ 'latitude' : {'units' : 'degrees' , 'extras' : {} },
129+ 'longitude' : {'units' : 'degrees' , 'extras' : {} },
130+ 'timezone' : {'units' : 'hours' , 'extras' : {} }
130131 }
131132 arg_reader = ArgumentReader (parameters )
132133 assert isinstance (arg_reader , DataReader ) # instance of ArgumentReader
@@ -156,10 +157,10 @@ def test_arg_data_src():
156157 class ArgSrcTest (DataSource ):
157158 data_reader = ArgumentReader
158159 data_cache_enabled = False
159- air_temp = {'units' : 'celsius' , 'argpos' : 0 }
160- latitude = {'units' : 'degrees' , 'isconstant' : True }
161- longitude = {'units' : 'degrees' , 'isconstant' : True }
162- timezone = {'units' : 'hours' }
160+ air_temp = DataParameter ( ** {'units' : 'celsius' , 'argpos' : 0 })
161+ latitude = DataParameter ( ** {'units' : 'degrees' , 'isconstant' : True })
162+ longitude = DataParameter ( ** {'units' : 'degrees' , 'isconstant' : True })
163+ timezone = DataParameter ( ** {'units' : 'hours' })
163164
164165 def __prepare_data__ (self ):
165166 pass
@@ -180,13 +181,13 @@ def __prepare_data__(self):
180181
181182def test_django_reader ():
182183 """
183- Test :class:`~carousel.contrib.readers.DjangoModelReader` is instantiated and
184- can load argument data units and values correctly.
184+ Test :class:`~carousel.contrib.readers.DjangoModelReader` is instantiated
185+ and can load argument data units and values correctly.
185186
186187 :return: django reader and data
187188 :raises: AssertionError
188189 """
189- params = {'air_temp' : {'units' : 'celsius' }}
190+ params = {'air_temp' : {'units' : 'celsius' , 'extras' : {} }}
190191 meta = type ('Meta' , (), {'model' : MyModel })
191192 django_reader = DjangoModelReader (params , meta )
192193 assert isinstance (django_reader , (DataReader , ArgumentReader ))
@@ -216,9 +217,9 @@ class DjangoSrcTest1(DataSource):
216217 data_reader = DjangoModelReader
217218 data_cache_enabled = False
218219 # parameters
219- air_temp = {'units' : 'celsius' }
220- latitude = {'units' : 'degrees' }
221- longitude = {'units' : 'degrees' }
220+ air_temp = DataParameter ( ** {'units' : 'celsius' })
221+ latitude = DataParameter ( ** {'units' : 'degrees' })
222+ longitude = DataParameter ( ** {'units' : 'degrees' })
222223
223224 class Meta :
224225 model = MyModel
@@ -244,9 +245,9 @@ class DjangoSrcTest2(DataSource):
244245 data_reader = DjangoModelReader
245246 data_cache_enabled = False
246247 # parameters
247- air_temp = {'units' : 'celsius' }
248- latitude = {'units' : 'degrees' }
249- longitude = {'units' : 'degrees' }
248+ air_temp = DataParameter ( ** {'units' : 'celsius' })
249+ latitude = DataParameter ( ** {'units' : 'degrees' })
250+ longitude = DataParameter ( ** {'units' : 'degrees' })
250251
251252 class Meta :
252253 model = MyModel
@@ -298,9 +299,9 @@ def test_hdf5_reader():
298299 setup_hdf5_test_data ()
299300 # test 1: load data from hdf5 dataset array by node
300301 params = {
301- 'GHI' : {'units' : 'W/m**2' , 'node' : '/data/GHI' },
302- 'DNI' : {'units' : 'W/m**2' , 'node' : '/data/DNI' },
303- 'Tdry' : {'units' : 'degC' , 'node' : '/data/Tdry' }
302+ 'GHI' : {'units' : 'W/m**2' , 'extras' : { ' node' : '/data/GHI' } },
303+ 'DNI' : {'units' : 'W/m**2' , 'extras' : { ' node' : '/data/DNI' } },
304+ 'Tdry' : {'units' : 'degC' , 'extras' : { ' node' : '/data/Tdry' } }
304305 }
305306 reader1 = HDF5Reader (params )
306307 assert isinstance (reader1 , DataReader )
@@ -312,12 +313,12 @@ def test_hdf5_reader():
312313 assert np .allclose (data1 ['Tdry' ], H5TABLE ['DryBulbTemperature' ])
313314 assert data1 ['Tdry' ].units == UREG .degC
314315 # test 2: load data from hdf5 dataset table by node and member name
315- params ['GHI' ]['node' ] = 'data'
316- params ['GHI' ]['member' ] = 'GlobalHorizontalRadiation'
317- params ['DNI' ]['node' ] = 'data'
318- params ['DNI' ]['member' ] = 'DirectNormalRadiation'
319- params ['Tdry' ]['node' ] = 'data'
320- params ['Tdry' ]['member' ] = 'DryBulbTemperature'
316+ params ['GHI' ]['extras' ][ ' node' ] = 'data'
317+ params ['GHI' ]['extras' ][ ' member' ] = 'GlobalHorizontalRadiation'
318+ params ['DNI' ]['extras' ][ ' node' ] = 'data'
319+ params ['DNI' ]['extras' ][ ' member' ] = 'DirectNormalRadiation'
320+ params ['Tdry' ]['extras' ][ ' node' ] = 'data'
321+ params ['Tdry' ]['extras' ][ ' member' ] = 'DryBulbTemperature'
321322 reader2 = HDF5Reader (params )
322323 assert isinstance (reader1 , DataReader )
323324 data2 = reader2 .load_data (H5TEST2 )
@@ -329,3 +330,11 @@ def test_hdf5_reader():
329330 assert data1 ['Tdry' ].units == UREG .degC
330331 teardown_hdf5_test_data ()
331332 return reader1 , data1 , reader2 , data2
333+
334+
335+ if __name__ == '__main__' :
336+ ar , d1 = test_arg_reader ()
337+ a = test_arg_data_src ()
338+ dr , d2 = test_django_reader ()
339+ test_django_data_src ()
340+ h5r1 , h5d1 , h5r2 , h5d2 = test_hdf5_reader ()
0 commit comments