> > > Supporting this might be cool indeed. OTOH, it doesn't replace the > > > current behavior. How do you get (day=30)? > > > > I don't follow. The semantics would be similar to list indexing. > > > > `day=30` asks for the 30-est day of the month and raises an ValueError > > if there isn't any. `day=-1` asks for the last day of the month (and > > should never raise an error <wink>). > > What advantage do you get with the raised error? The replace() method > of dateutil already does something similar, and I'm not trying to > mimic it. IMHO, it is more useful if the caller specifies the exact intent and gets what he asks for. Being able to pass any positive large number and get the last day of the month doesn't look like a good interface to me. > I'm trying to provide some aditionally useful mechanism. I'm glad you do. Thank you. > > The allowed argument range for `day` would be between 1 and `n` with > > `n` the number of days in the month for positive values and between -1 > > and `-n` for negative values. > > The whole point of being relative is that it acts differently on > different dates. What happens when you do > > date(2004, 1, 31) + relativedelta(months=1) > > Will it raise an error as well? The current behavior is consistently > designed to get useful results, in addition to what datetime provides. I don't know. The problem here is that it is not obvious what is going to happen. Consider: d1 = date(2004, 1, 31) d2 = date(2004, 1, 28) d1_1 = d1 + relativedelta(months=1) d2_1 = d2 + relativedelta(months=1) If you subscribe to d1_1 == d2_1, what do you expect to be the result of: d1_1 + relativedelta(months=1) d2_1 + relativedelta(months=1) Whatever you choose it will be seriously inconsistent from one point of view or another. -- Christian Tanzer http://www.c-tanzer.at/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4