summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-businesstimedelta.spec461
-rw-r--r--sources1
3 files changed, 463 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..4be7b7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/businesstimedelta-1.0.1.tar.gz
diff --git a/python-businesstimedelta.spec b/python-businesstimedelta.spec
new file mode 100644
index 0000000..cdc9cf3
--- /dev/null
+++ b/python-businesstimedelta.spec
@@ -0,0 +1,461 @@
+%global _empty_manifest_terminate_build 0
+Name: python-businesstimedelta
+Version: 1.0.1
+Release: 1
+Summary: Timedelta for business time. Supports exact amounts of time (hours, seconds), custom schedules, holidays, and time zones.
+License: MIT
+URL: http://github.com/seppemans/businesstimedelta
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/55/cd/b7d60a91db23d2de3e7e3e915949dbf4e4ddd02ea2a6b8b8ed27ce9adfac/businesstimedelta-1.0.1.tar.gz
+BuildArch: noarch
+
+Requires: python3-pytz
+Requires: python3-holidays
+
+%description
+# BusinessTimeDelta
+Python's timedelta for business time. This module helps you calculate the exact working time between two datetimes. It supports common scenarios such as custom schedules, holidays, and time zones.
+
+[![Build Status](https://travis-ci.org/seppemans/businesstimedelta.svg?branch=master)](https://travis-ci.org/seppemans/businesstimedelta)
+
+## Installation
+Use pip to install BusinessTimeDelta.
+
+```shell
+pip install businesstimedelta
+```
+
+## Example Use
+Define your business hours
+
+```python
+import datetime
+import pytz
+import businesstimedelta
+
+# Define a working day
+workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4])
+
+# Take out the lunch break
+lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4])
+
+# Combine the two
+businesshrs = businesstimedelta.Rules([workday, lunchbreak])
+```
+
+Calculate the business time between two datetimes
+
+```python
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 40 hours 0 seconds>
+
+print "%s hours and %s seconds" % (bdiff.hours, bdiff.seconds)
+# 40 hours and 0 seconds
+```
+
+Business time arithmetic
+
+```python
+print start + businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-22 18:00:00+00:00
+
+print end - businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-18 09:00:00+00:00
+```
+
+To define holidays, simply use the [Holidays](https://pypi.python.org/pypi/holidays) package
+
+```python
+import holidays as pyholidays
+
+ca_holidays = pyholidays.US(state='CA')
+holidays = businesstimedelta.HolidayRule(ca_holidays)
+businesshrs = businesstimedelta.Rules([workday, lunchbreak, holidays])
+
+# Christmas is on Friday 2015/12/25
+start = datetime.datetime(2015, 12, 21, 9, 0, 0)
+end = datetime.datetime(2015, 12, 28, 9, 0, 0)
+print businesshrs.difference(start, end)
+# <BusinessTimeDelta 32 hours 0 seconds>
+```
+
+## Timezones
+If your datetimes are not timezone aware, they will be localized to UTC (see example above).
+
+Let's say you want to calculate the business time overlap between a working day in San Francisco and in Santiago, Chile:
+```python
+santiago_workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_businesshrs = businesstimedelta.Rules([santiago_workday, santiago_lunchbreak])
+
+sf_tz = pytz.timezone('America/Los_Angeles')
+sf_start = sf_tz.localize(datetime.datetime(2016, 1, 18, 9, 0, 0))
+sf_end = sf_tz.localize(datetime.datetime(2016, 1, 18, 18, 0, 0))
+
+print santiago_businesshrs.difference(sf_start, sf_end)
+# <BusinessTimeDelta 4 hours 0 seconds>
+```
+
+## Overnight Shifts
+```python
+# Day shift
+workday = WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(17),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.utc)
+
+# Night shift
+nightshift = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(23),
+ end_time=datetime.time(7),
+ working_days=[0, 1, 2, 3, 4])
+
+businesshrs = businesstimedelta.Rules([workday, nightshift])
+
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 80 hours 0 seconds>
+```
+
+
+
+
+%package -n python3-businesstimedelta
+Summary: Timedelta for business time. Supports exact amounts of time (hours, seconds), custom schedules, holidays, and time zones.
+Provides: python-businesstimedelta
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-businesstimedelta
+# BusinessTimeDelta
+Python's timedelta for business time. This module helps you calculate the exact working time between two datetimes. It supports common scenarios such as custom schedules, holidays, and time zones.
+
+[![Build Status](https://travis-ci.org/seppemans/businesstimedelta.svg?branch=master)](https://travis-ci.org/seppemans/businesstimedelta)
+
+## Installation
+Use pip to install BusinessTimeDelta.
+
+```shell
+pip install businesstimedelta
+```
+
+## Example Use
+Define your business hours
+
+```python
+import datetime
+import pytz
+import businesstimedelta
+
+# Define a working day
+workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4])
+
+# Take out the lunch break
+lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4])
+
+# Combine the two
+businesshrs = businesstimedelta.Rules([workday, lunchbreak])
+```
+
+Calculate the business time between two datetimes
+
+```python
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 40 hours 0 seconds>
+
+print "%s hours and %s seconds" % (bdiff.hours, bdiff.seconds)
+# 40 hours and 0 seconds
+```
+
+Business time arithmetic
+
+```python
+print start + businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-22 18:00:00+00:00
+
+print end - businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-18 09:00:00+00:00
+```
+
+To define holidays, simply use the [Holidays](https://pypi.python.org/pypi/holidays) package
+
+```python
+import holidays as pyholidays
+
+ca_holidays = pyholidays.US(state='CA')
+holidays = businesstimedelta.HolidayRule(ca_holidays)
+businesshrs = businesstimedelta.Rules([workday, lunchbreak, holidays])
+
+# Christmas is on Friday 2015/12/25
+start = datetime.datetime(2015, 12, 21, 9, 0, 0)
+end = datetime.datetime(2015, 12, 28, 9, 0, 0)
+print businesshrs.difference(start, end)
+# <BusinessTimeDelta 32 hours 0 seconds>
+```
+
+## Timezones
+If your datetimes are not timezone aware, they will be localized to UTC (see example above).
+
+Let's say you want to calculate the business time overlap between a working day in San Francisco and in Santiago, Chile:
+```python
+santiago_workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_businesshrs = businesstimedelta.Rules([santiago_workday, santiago_lunchbreak])
+
+sf_tz = pytz.timezone('America/Los_Angeles')
+sf_start = sf_tz.localize(datetime.datetime(2016, 1, 18, 9, 0, 0))
+sf_end = sf_tz.localize(datetime.datetime(2016, 1, 18, 18, 0, 0))
+
+print santiago_businesshrs.difference(sf_start, sf_end)
+# <BusinessTimeDelta 4 hours 0 seconds>
+```
+
+## Overnight Shifts
+```python
+# Day shift
+workday = WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(17),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.utc)
+
+# Night shift
+nightshift = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(23),
+ end_time=datetime.time(7),
+ working_days=[0, 1, 2, 3, 4])
+
+businesshrs = businesstimedelta.Rules([workday, nightshift])
+
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 80 hours 0 seconds>
+```
+
+
+
+
+%package help
+Summary: Development documents and examples for businesstimedelta
+Provides: python3-businesstimedelta-doc
+%description help
+# BusinessTimeDelta
+Python's timedelta for business time. This module helps you calculate the exact working time between two datetimes. It supports common scenarios such as custom schedules, holidays, and time zones.
+
+[![Build Status](https://travis-ci.org/seppemans/businesstimedelta.svg?branch=master)](https://travis-ci.org/seppemans/businesstimedelta)
+
+## Installation
+Use pip to install BusinessTimeDelta.
+
+```shell
+pip install businesstimedelta
+```
+
+## Example Use
+Define your business hours
+
+```python
+import datetime
+import pytz
+import businesstimedelta
+
+# Define a working day
+workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4])
+
+# Take out the lunch break
+lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4])
+
+# Combine the two
+businesshrs = businesstimedelta.Rules([workday, lunchbreak])
+```
+
+Calculate the business time between two datetimes
+
+```python
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 40 hours 0 seconds>
+
+print "%s hours and %s seconds" % (bdiff.hours, bdiff.seconds)
+# 40 hours and 0 seconds
+```
+
+Business time arithmetic
+
+```python
+print start + businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-22 18:00:00+00:00
+
+print end - businesstimedelta.BusinessTimeDelta(businesshrs, hours=40)
+# 2016-01-18 09:00:00+00:00
+```
+
+To define holidays, simply use the [Holidays](https://pypi.python.org/pypi/holidays) package
+
+```python
+import holidays as pyholidays
+
+ca_holidays = pyholidays.US(state='CA')
+holidays = businesstimedelta.HolidayRule(ca_holidays)
+businesshrs = businesstimedelta.Rules([workday, lunchbreak, holidays])
+
+# Christmas is on Friday 2015/12/25
+start = datetime.datetime(2015, 12, 21, 9, 0, 0)
+end = datetime.datetime(2015, 12, 28, 9, 0, 0)
+print businesshrs.difference(start, end)
+# <BusinessTimeDelta 32 hours 0 seconds>
+```
+
+## Timezones
+If your datetimes are not timezone aware, they will be localized to UTC (see example above).
+
+Let's say you want to calculate the business time overlap between a working day in San Francisco and in Santiago, Chile:
+```python
+santiago_workday = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(18),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_lunchbreak = businesstimedelta.LunchTimeRule(
+ start_time=datetime.time(12),
+ end_time=datetime.time(13),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.timezone('America/Santiago'))
+
+santiago_businesshrs = businesstimedelta.Rules([santiago_workday, santiago_lunchbreak])
+
+sf_tz = pytz.timezone('America/Los_Angeles')
+sf_start = sf_tz.localize(datetime.datetime(2016, 1, 18, 9, 0, 0))
+sf_end = sf_tz.localize(datetime.datetime(2016, 1, 18, 18, 0, 0))
+
+print santiago_businesshrs.difference(sf_start, sf_end)
+# <BusinessTimeDelta 4 hours 0 seconds>
+```
+
+## Overnight Shifts
+```python
+# Day shift
+workday = WorkDayRule(
+ start_time=datetime.time(9),
+ end_time=datetime.time(17),
+ working_days=[0, 1, 2, 3, 4],
+ tz=pytz.utc)
+
+# Night shift
+nightshift = businesstimedelta.WorkDayRule(
+ start_time=datetime.time(23),
+ end_time=datetime.time(7),
+ working_days=[0, 1, 2, 3, 4])
+
+businesshrs = businesstimedelta.Rules([workday, nightshift])
+
+start = datetime.datetime(2016, 1, 18, 9, 0, 0)
+end = datetime.datetime(2016, 1, 22, 18, 0, 0)
+bdiff = businesshrs.difference(start, end)
+
+print bdiff
+# <BusinessTimeDelta 80 hours 0 seconds>
+```
+
+
+
+
+%prep
+%autosetup -n businesstimedelta-1.0.1
+
+%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-businesstimedelta -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..a1a7e97
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+9216818cc3513bce93ea940ecb88d78e businesstimedelta-1.0.1.tar.gz