def convert_datetime_params(params: RequestParams) -> RequestParams: """Convert any dates, datetimes, or timestamps in other formats into ISO 8601 strings. API behavior note: params that take date but not time info will accept a full timestamp and just ignore the time, so it's safe to parse both date and datetime strings into timestamps Raises: :py:exc:`dateutil.parser._parser.ParserError` if a date/datetime format is invalid """ for k, v in params.items(): if isinstance(v, (date, datetime)) or (isinstance(v, str) and k in DATETIME_PARAMS): params[k] = convert_isoformat(v) return params
def strip_empty_params(params: RequestParams) -> RequestParams: """Remove any request parameters with empty or ``None`` values.""" return {k: v for k, v in params.items() if v or v is False}
def convert_list_params(params: RequestParams) -> RequestParams: """Convert any list parameters into an API-compatible (comma-delimited) string. Will be url-encoded by requests. For example: `['k1', 'k2', 'k3'] -> k1%2Ck2%2Ck3` """ return {k: convert_list(v) for k, v in params.items()}
def convert_bool_params(params: RequestParams) -> RequestParams: """ Convert any boolean request parameters to javascript-style boolean strings """ for k, v in params.items(): if isinstance(v, bool): params[k] = str(v).lower() return params