1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
%global _empty_manifest_terminate_build 0
Name: python-datedelta
Version: 1.4
Release: 1
Summary: Like datetime.timedelta, for date arithmetic.
License: BSD-3-Clause
URL: https://github.com/aaugustin/datedelta
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b1/5d/a34fd53137d287fd08182d9530941f651a88de67bddc68292954166355e0/datedelta-1.4.tar.gz
BuildArch: noarch
%description
There are two date arithmetic traps in the Gregorian calendar:
1. Leap years. Problems arise when adding years to a February 29th gives a
result in a non-leap year.
2. Variable number of days in months. Problems arise when adding months to a
29th, 30th or 31st gives a result in a month where that day doesn't exist.
In both cases, datedelta changes the result to the first day of the next month.
This method gives consistent results provided periods are represented by
(start date inclusive, end date exclusive) — that's [start date, end date) if
you prefer the mathematical notation. This representation of periods is akin
to 0-based indexing, which is the convention Python uses.
For example:
* If someone subscribes for a year starting on 2020-02-29 inclusive, the end
date must be 2021-03-01 exclusive. If it was 2020-02-28 exclusive, that day
would be missing from the subscription period.
* If someone subscribes for three months starting on 2020-03-31 inclusive, the
end date must be 2020-07-01 exclusive. If it was 2020-06-30 exclusive, that
day would be missing from the subscription period.
Operations are always performed on years, then months, then days. This order
usually provides the expected behavior. It also minimizes loss of precision.
%package -n python3-datedelta
Summary: Like datetime.timedelta, for date arithmetic.
Provides: python-datedelta
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-datedelta
There are two date arithmetic traps in the Gregorian calendar:
1. Leap years. Problems arise when adding years to a February 29th gives a
result in a non-leap year.
2. Variable number of days in months. Problems arise when adding months to a
29th, 30th or 31st gives a result in a month where that day doesn't exist.
In both cases, datedelta changes the result to the first day of the next month.
This method gives consistent results provided periods are represented by
(start date inclusive, end date exclusive) — that's [start date, end date) if
you prefer the mathematical notation. This representation of periods is akin
to 0-based indexing, which is the convention Python uses.
For example:
* If someone subscribes for a year starting on 2020-02-29 inclusive, the end
date must be 2021-03-01 exclusive. If it was 2020-02-28 exclusive, that day
would be missing from the subscription period.
* If someone subscribes for three months starting on 2020-03-31 inclusive, the
end date must be 2020-07-01 exclusive. If it was 2020-06-30 exclusive, that
day would be missing from the subscription period.
Operations are always performed on years, then months, then days. This order
usually provides the expected behavior. It also minimizes loss of precision.
%package help
Summary: Development documents and examples for datedelta
Provides: python3-datedelta-doc
%description help
There are two date arithmetic traps in the Gregorian calendar:
1. Leap years. Problems arise when adding years to a February 29th gives a
result in a non-leap year.
2. Variable number of days in months. Problems arise when adding months to a
29th, 30th or 31st gives a result in a month where that day doesn't exist.
In both cases, datedelta changes the result to the first day of the next month.
This method gives consistent results provided periods are represented by
(start date inclusive, end date exclusive) — that's [start date, end date) if
you prefer the mathematical notation. This representation of periods is akin
to 0-based indexing, which is the convention Python uses.
For example:
* If someone subscribes for a year starting on 2020-02-29 inclusive, the end
date must be 2021-03-01 exclusive. If it was 2020-02-28 exclusive, that day
would be missing from the subscription period.
* If someone subscribes for three months starting on 2020-03-31 inclusive, the
end date must be 2020-07-01 exclusive. If it was 2020-06-30 exclusive, that
day would be missing from the subscription period.
Operations are always performed on years, then months, then days. This order
usually provides the expected behavior. It also minimizes loss of precision.
%prep
%autosetup -n datedelta-1.4
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-datedelta -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.4-1
- Package Spec generated
|