mirror of
https://github.com/apache/superset.git
synced 2026-08-31 20:41:17 +00:00
Signed-off-by: Arya Ketan <aryaketan@sharechat.co> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Evan Rusackas <evan@preset.io>
53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
# 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 inspect
|
|
|
|
from superset.utils.pandas_postprocessing import (
|
|
escape_separator,
|
|
pivot,
|
|
unescape_separator,
|
|
)
|
|
|
|
|
|
def test_escape_separator():
|
|
assert escape_separator(r" hell \world ") == r" hell \world "
|
|
assert unescape_separator(r" hell \world ") == r" hell \world "
|
|
|
|
escape_string = escape_separator("hello, world")
|
|
assert escape_string == r"hello\, world"
|
|
assert unescape_separator(escape_string) == "hello, world"
|
|
|
|
escape_string = escape_separator("hello,world")
|
|
assert escape_string == r"hello\,world"
|
|
assert unescape_separator(escape_string) == "hello,world"
|
|
|
|
|
|
def test_validate_column_args_preserves_signature():
|
|
"""
|
|
The decorator must not hide the signature of the operation it wraps.
|
|
|
|
`inspect.signature` follows `__wrapped__`, which `functools.wraps` sets.
|
|
Without it every decorated operation reports `(df, **options)`, and code
|
|
that inspects the signature -- see `QueryObject._drop_unsupported_options`
|
|
-- cannot tell a supported option from an unsupported one.
|
|
"""
|
|
parameters = inspect.signature(pivot).parameters
|
|
|
|
assert pivot.__name__ == "pivot"
|
|
assert "options" not in parameters
|
|
assert {"index", "aggregates", "columns"} <= set(parameters)
|