Skip to content

Conversation

@backbord
Copy link
Contributor

@backbord backbord commented Nov 13, 2020

Hi @mvantellingen,

I really like your project but recently stumbled into #876 when I wanted to specify a duration as "PT15M" and got "P%P" in the generated SOAP message.

Here's my attempt to improve the behaviour. Two simple and small test cases are included.
I hope you might consider merging the PR or giving advice if there's another desired way to do things.

In this PR, two things happen:

  • Passing in a datetime.timedelta value is allowed.
  • Passing in a str value will result in the str being parsed by isodate.parse_duration() to ensure the provided value is indeed an iso duration.
    The result of the parsing is then handed over to isodate.duration_isoformat() to produce the desired duration string.
    This round-trip mimics one of your test cases and results in builtins.Duration().xmlvalue("P0Y1347M0D") == "P1347M" where the superfluous zeros are eliminated. This should also ensure that the string is a valid duration in isoformat and raise a ValueError if it cannot be parsed as such.

Thanks and best regards,
Tim

Passing a str to `Duration.xmlvalue(value)` will result
in a properly formatted iso duration.
@mvantellingen mvantellingen merged commit 221d923 into mvantellingen:master Aug 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants