(args_o, args_n, defaults_o, defaults_n)
| 33 | |
| 34 | |
| 35 | def _check_compatible(args_o, args_n, defaults_o, defaults_n): |
| 36 | # 如果参数减少了,需要提醒关注 |
| 37 | if len(args_o) > len(args_n): |
| 38 | logger.debug("args num less then previous: %s vs %s", args_o, args_n) |
| 39 | return False |
| 40 | # 参数改名了,也要提醒关注 |
| 41 | for idx in range(min(len(args_o), len(args_n))): |
| 42 | if args_o[idx] != args_n[idx]: |
| 43 | logger.debug( |
| 44 | "args's %d parameter diff with previous: %s vs %s", |
| 45 | idx, |
| 46 | args_o, |
| 47 | args_n, |
| 48 | ) |
| 49 | return False |
| 50 | # 新增加了参数,必须提供默认值。以及不能减少默认值数量 |
| 51 | if (len(args_n) - len(defaults_n)) > (len(args_o) - len(defaults_o)): |
| 52 | logger.debug( |
| 53 | "defaults num less then previous: %s vs %s", defaults_o, defaults_n |
| 54 | ) |
| 55 | return False |
| 56 | # 默认值必须相等 |
| 57 | for idx in range(min(len(defaults_o), len(defaults_n))): |
| 58 | nidx_o = -1 - idx |
| 59 | nidx_n = -1 - idx - (len(args_n) - len(args_o)) |
| 60 | if defaults_o[nidx_o] != defaults_n[nidx_n]: |
| 61 | logger.debug( |
| 62 | "defaults's %d value diff with previous: %s vs %s", |
| 63 | nidx_n, |
| 64 | defaults_o, |
| 65 | defaults_n, |
| 66 | ) |
| 67 | return False |
| 68 | return True |
| 69 | |
| 70 | |
| 71 | def check_compatible(old_api_spec, new_api_spec): |
no test coverage detected