"""simple docstring"""





def    lowercase_   (   _lowerCamelCase:	str						,   _lowerCamelCase:	str      ) ->      bool:



       '''simple docstring'''

       __lowerCamelCase					:		Optional[int]		   =     len(_lowerCamelCase      ) + 1
       __lowerCamelCase					:		int		   =     len(_lowerCamelCase      ) + 1

       # dp is a 2d matrix where dp[i][j] denotes whether prefix string of
       # length i of input_string matches with prefix string of length j of
       # given pattern.
       # "dp" stands for dynamic programming.
       __lowerCamelCase					:		Union[str, Any]		   =     [[0 for i in range(_lowerCamelCase      )] for j in range(_lowerCamelCase      )]

       # since string of zero length match pattern of zero length
       __lowerCamelCase					:		Optional[Any]		   =     1

       # since pattern of zero length will never match with string of non-zero length
       for i in range(1						,   _lowerCamelCase      ):
              __lowerCamelCase					:		Optional[int]		   =     0

       # since string of zero length will match with pattern where there
       # is at least one * alternatively
       for j in range(1						,   _lowerCamelCase      ):
              __lowerCamelCase					:		List[Any]		   =     dp[0][j - 2] if pattern[j - 1] == "*" else 0

       # now using bottom-up approach to find for all remaining lengths
       for i in range(1						,   _lowerCamelCase      ):
              for j in range(1						,   _lowerCamelCase      ):
                     if input_string[i - 1] == pattern[j - 1] or pattern[j - 1] == ".":
                            __lowerCamelCase					:		Tuple		   =     dp[i - 1][j - 1]

                     elif pattern[j - 1] == "*":
                            if dp[i][j - 2] == 1:
                                   __lowerCamelCase					:		Tuple		   =     1
                            elif pattern[j - 2] in (input_string[i - 1], "."):
                                   __lowerCamelCase					:		Dict		   =     dp[i - 1][j]
                            else:
                                   __lowerCamelCase					:		Dict		   =     0
                     else:
                            __lowerCamelCase					:		Optional[Any]		   =     0

       return bool(dp[-1][-1]      )


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    # inputing the strings
    # input_string = input("input a string :")
    # pattern = input("input a pattern :")

    __A  =				'''aab'''
    __A  =				'''c*a*b'''

    # using function to check whether given string matches the given pattern
    if match_pattern(input_string, pattern):
        print(F"""{input_string} matches the given pattern {pattern}""")
    else:
        print(F"""{input_string} does not match with the given pattern {pattern}""")
"""simple docstring"""





# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import doctest
import sys
import warnings
from os.path import abspath, dirname, join

import _pytest

from transformers.testing_utils import HfDoctestModule, HfDocTestParser


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
__A  =				abspath(join(dirname(__file__), '''src'''))
sys.path.insert(1, git_repo_path)

# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action='''ignore''', category=FutureWarning)


def    lowercase_   (   _lowerCamelCase:	List[Any]      ) ->      Union[str, Any]:



							'''simple docstring'''

							config.addinivalue_line(
							    "markers"						,   "is_pt_tf_cross_test: mark test to run only when PT and TF interactions are tested"      )
							config.addinivalue_line(
							    "markers"						,   "is_pt_flax_cross_test: mark test to run only when PT and FLAX interactions are tested"      )
							config.addinivalue_line("markers"						,   "is_pipeline_test: mark test to run only when pipelines are tested"      )
							config.addinivalue_line("markers"						,   "is_staging_test: mark test to run only in the staging environment"      )
							config.addinivalue_line("markers"						,   "accelerate_tests: mark test that require accelerate"      )
							config.addinivalue_line("markers"						,   "tool_tests: mark the tool tests that are run on their specific schedule"      )


def    lowercase_   (   _lowerCamelCase:	Union[str, Any]      ) ->      Any:



							'''simple docstring'''

							from transformers.testing_utils import pytest_addoption_shared

							pytest_addoption_shared(_lowerCamelCase      )


def    lowercase_   (   _lowerCamelCase:	Optional[int]      ) ->      Tuple:



							'''simple docstring'''

							from transformers.testing_utils import pytest_terminal_summary_main

							__lowerCamelCase					:		Any		   =     terminalreporter.config.getoption("--make-reports"      )
							if make_reports:
														pytest_terminal_summary_main(_lowerCamelCase						,   id=_lowerCamelCase      )


def    lowercase_   (   _lowerCamelCase:	Union[str, Any]						,   _lowerCamelCase:	Tuple      ) ->      Dict:



							'''simple docstring'''

							if exitstatus == 5:
														__lowerCamelCase					:		Optional[int]		   =     0


# Doctest custom flag to ignore output.
__A  =				doctest.register_optionflag('''IGNORE_RESULT''')

__A  =				doctest.OutputChecker
class  _snake_case     (					a__		):






						def       lowerCamelCase__     (       self      :			List[str]							,					UpperCAmelCase      :			int							,					UpperCAmelCase      :			Any							,					UpperCAmelCase      :			int    ):
													if IGNORE_RESULT & optionflags:
																				return True
													return OutputChecker.check_output(self							,					UpperCAmelCase							,					UpperCAmelCase							,					UpperCAmelCase    )

__A  =				CustomOutputChecker
__A  =				HfDoctestModule







__A  =				HfDocTestParser