%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 - 1.4-1 - Package Spec generated