File: C:/Users/fred/anaconda3/Lib/site-packages/datashader/datashape/tests/test_user.py
import pytest
from datashader.datashape.user import issubschema, validate
from datashader.datashape import dshape
from datetime import date, time, datetime
import numpy as np
min_np = pytest.mark.skipif(
np.__version__ > '1.14',
reason="issubdtype no longer downcasts"
)
@min_np
def test_validate():
assert validate(int, 1)
assert validate('int', 1)
assert validate(str, 'Alice')
assert validate(dshape('string'), 'Alice')
assert validate(dshape('int'), 1)
assert validate(dshape('int')[0], 1)
assert validate('real', 2.0)
assert validate('2 * int', (1, 2))
assert not validate('3 * int', (1, 2))
assert not validate('2 * int', 2)
@min_np
def test_nested_iteratables():
assert validate('2 * 3 * int', [(1, 2, 3), (4, 5, 6)])
def test_numeric_tower():
assert validate(np.integer, np.int32(1))
assert validate(np.number, np.int32(1))
@min_np
def test_validate_dicts():
assert validate('{x: int, y: int}', {'x': 1, 'y': 2})
assert not validate('{x: int, y: int}', {'x': 1, 'y': 2.0})
assert not validate('{x: int, y: int}', {'x': 1, 'z': 2})
assert validate('var * {x: int, y: int}', [{'x': 1, 'y': 2}])
assert validate('var * {x: int, y: int}', [{'x': 1, 'y': 2},
{'x': 3, 'y': 4}])
@min_np
def test_tuples_can_be_records_too():
assert validate('{x: int, y: real}', (1, 2.0))
assert not validate('{x: int, y: real}', (1.0, 2))
def test_datetimes():
assert validate('time', time(12, 0, 0))
assert validate('date', date(1999, 1, 20))
assert validate('datetime', datetime(1999, 1, 20, 12, 0, 0))
def test_numpy():
assert validate('2 * int32', np.array([1, 2], dtype='int32'))
def test_issubschema():
assert issubschema('int', 'int')
assert not issubschema('int', 'float32')
assert issubschema('2 * int', '2 * int')
assert not issubschema('2 * int', '3 * int')
# assert issubschema('float32', 'real')
def test_integration():
assert validate('{name: string, arrived: date}',
{'name': 'Alice', 'arrived': date(2012, 1, 5)})