| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| import pytest |
| |
| import datafusion |
| from datafusion import ( |
| AggregateUDF, |
| DataFrame, |
| SessionContext, |
| ScalarUDF, |
| functions, |
| ) |
| |
| from datafusion.common import ( |
| DFField, |
| DFSchema, |
| ) |
| |
| from datafusion.expr import ( |
| Expr, |
| Column, |
| Literal, |
| BinaryExpr, |
| AggregateFunction, |
| Projection, |
| TableScan, |
| Filter, |
| Limit, |
| Aggregate, |
| Sort, |
| Analyze, |
| ) |
| |
| |
| def test_import_datafusion(): |
| assert datafusion.__name__ == "datafusion" |
| |
| |
| def test_datafusion_python_version(): |
| assert datafusion.__version__ is not None |
| |
| |
| def test_class_module_is_datafusion(): |
| for klass in [ |
| SessionContext, |
| DataFrame, |
| ScalarUDF, |
| AggregateUDF, |
| ]: |
| assert klass.__module__ == "datafusion" |
| |
| # expressions |
| for klass in [Expr, Column, Literal, BinaryExpr, AggregateFunction]: |
| assert klass.__module__ == "datafusion.expr" |
| |
| # operators |
| for klass in [ |
| Projection, |
| TableScan, |
| Aggregate, |
| Sort, |
| Limit, |
| Filter, |
| Analyze, |
| ]: |
| assert klass.__module__ == "datafusion.expr" |
| |
| # schema |
| for klass in [DFField, DFSchema]: |
| assert klass.__module__ == "datafusion.common" |
| |
| |
| def test_import_from_functions_submodule(): |
| from datafusion.functions import abs, sin # noqa |
| |
| assert functions.abs is abs |
| assert functions.sin is sin |
| |
| msg = "cannot import name 'foobar' from 'datafusion.functions'" |
| with pytest.raises(ImportError, match=msg): |
| from datafusion.functions import foobar # noqa |
| |
| |
| def test_classes_are_inheritable(): |
| class MyExecContext(SessionContext): |
| pass |
| |
| class MyExpression(Expr): |
| pass |
| |
| class MyDataFrame(DataFrame): |
| pass |