In Python, keyword args can also be passed as positional args. So in gapic-google-logging-v2 (0.9.3), LoggingServiceV2Api.list_log_entries had the signature:
def list_log_entries(self,
project_ids,
filter_='',
order_by='',
page_size=0,
options=None):
but in gapic-google-logging-v2 (0.10.1), it became:
def list_log_entries(self,
project_ids,
resource_names=None,
filter_='',
order_by='',
page_size=0,
options=None):
i.e. it grew resource_names in the middle. Hence when we called via positional only
page_iter = self._gax_api.list_log_entries(
projects, filter_, order_by, page_size, options)
that code broke on the upgrade from 0.9.x to 0.10.x.
This is somewhat fine, but if you wanted, you could force users to always use some arguments as keywords by using *args, **kwargs and then unpacking args according to a specified length needed for positional and then removing from kwargs to sanitize.