Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chor(test) : Fix kfp-sdk-test for different python versions #11559

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/kfp-sdk-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
python-version: ${{ matrix.python-version }}

- name: Run SDK Tests
run: |
Expand Down
42 changes: 17 additions & 25 deletions sdk/python/kfp/cli/utils/parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@ def get_param_descr(fn: Callable, param_name: str) -> str:
fn (Callable): The function of method with a __doc__ docstring implemented.
param_name (str): The parameter for which to extract the description.

Raises:
ValueError: If docstring is not found or parameter is not found in docstring.

Returns:
str: The description of the parameter.
"""
Expand All @@ -38,32 +35,27 @@ def get_param_descr(fn: Callable, param_name: str) -> str:
f'Could not find parameter {param_name} in docstring of {fn}')
lines = docstring.splitlines()

# collect all lines beginning after args, also get indentation space_chars
# Find Args section
for i, line in enumerate(lines):
if line.lstrip().startswith('Args:'):
break
else: # No Args section found
raise ValueError(f'No Args section found in docstring of {fn}')

lines = lines[i + 1:]

first_already_found = False
return_lines = []

# allow but don't require type in docstring
first_line_args_regex = rf'^{param_name}( \(.*\))?: '
for line in lines:
if not first_already_found and re.match(first_line_args_regex,
line.lstrip()):
new_line = re.sub(first_line_args_regex, '', line.strip())
return_lines.append(new_line)
first_already_found = True
first_indentation_level = len(line) - len(line.lstrip())
continue

if first_already_found:
indentation_level = len(line) - len(line.lstrip())
if indentation_level <= first_indentation_level:
return ' '.join(return_lines)
else:
return_lines.append(line.strip())
for i, line in enumerate(lines):
stripped = line.lstrip()
match = re.match(first_line_args_regex, stripped)
if match:
description = [re.sub(first_line_args_regex, '', stripped)]
# Collect any additional lines that are more indented
current_indent = len(line) - len(stripped)
for next_line in lines[i + 1:]:
next_indent = len(next_line) - len(next_line.lstrip())
if next_indent <= current_indent:
break
description.append(next_line.strip())
return ' '.join(description)
raise ValueError(
f'Could not find parameter {param_name} in docstring of {fn}')
f'Could not find parameter {param_name} in docstring of {fn}')