Parse string signatures for a generalized universal function. Arguments --------- signature : string Generalized universal function signature, e.g., ``(m,n),(n,p)->(m,p)`` for ``np.matmul``. Returns ------- Tuple of input and output core dimensions pars
(signature)
| 2005 | |
| 2006 | |
| 2007 | def _parse_gufunc_signature(signature): |
| 2008 | """ |
| 2009 | Parse string signatures for a generalized universal function. |
| 2010 | |
| 2011 | Arguments |
| 2012 | --------- |
| 2013 | signature : string |
| 2014 | Generalized universal function signature, e.g., ``(m,n),(n,p)->(m,p)`` |
| 2015 | for ``np.matmul``. |
| 2016 | |
| 2017 | Returns |
| 2018 | ------- |
| 2019 | Tuple of input and output core dimensions parsed from the signature, each |
| 2020 | of the form List[Tuple[str, ...]]. |
| 2021 | """ |
| 2022 | signature = re.sub(r'\s+', '', signature) |
| 2023 | |
| 2024 | if not re.match(_SIGNATURE, signature): |
| 2025 | raise ValueError( |
| 2026 | 'not a valid gufunc signature: {}'.format(signature)) |
| 2027 | return tuple([tuple(re.findall(_DIMENSION_NAME, arg)) |
| 2028 | for arg in re.findall(_ARGUMENT, arg_list)] |
| 2029 | for arg_list in signature.split('->')) |
| 2030 | |
| 2031 | |
| 2032 | def _update_dim_sizes(dim_sizes, arg, core_dims): |