Compare commits

...
Sign in to create a new pull request.

36 commits

Author SHA1 Message Date
Python Maint
bb4d7e8077 Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 14:01:43 +02:00
Python Maint
47d1dfb924 Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 14:25:42 +02:00
Fedora Release Engineering
11086bec8a Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 09:27:00 +00:00
Python Maint
b9cfe2cc78 Rebuilt for Python 3.14 2025-06-02 20:34:02 +02:00
Fedora Release Engineering
0574505f81 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 17:25:08 +00:00
Carl George
70c30f0ba5 Convert to pyproject macros
This updates the spec file to follow the modern Python Packaging
guidelines where possible.
2024-09-25 12:47:46 -05:00
Pavel Raiskup
9dde5d8b5f README.md: note about Copr builds 2024-09-25 07:28:41 +02:00
Pavel Raiskup
ffb3785f1f Make the changelog chronologically ordered 2024-09-25 07:28:41 +02:00
Pavel Raiskup
853f4fd193 Update the synchronizing script 2024-09-25 07:28:38 +02:00
Fedora Release Engineering
10a4af73ce Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-19 14:12:37 +00:00
Python Maint
aaaf5c1358 Rebuilt for Python 3.13 2024-06-07 08:57:25 +02:00
Fedora Release Engineering
8c1145608b Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-26 08:13:14 +00:00
Fedora Release Engineering
8dcbe52ac3 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-22 05:12:05 +00:00
Fedora Release Engineering
b0de2732cb Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-21 12:26:00 +00:00
Python Maint
30987611b1 Rebuilt for Python 3.12 2023-06-13 20:47:57 +02:00
Fedora Release Engineering
ad2c27039e Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 15:49:29 +00:00
Pavel Raiskup
505ca6ee15 spec: clean comments after macros
This caused a non-fatal syntax errors on newer systems.
2022-07-25 13:30:06 +02:00
Pavel Raiskup
390ed8303d Sync with https://github.com/python-progress/python-progress
- use time.monotonic(), as the original fork does
- return infinity time per item for zero speed

Version: 1.6-6
2022-07-25 13:30:02 +02:00
Fedora Release Engineering
0750cb964f Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-22 20:59:56 +00:00
Pavel Raiskup
c7e9fc54d9 Add a release helper script 2022-07-05 10:02:29 +02:00
Pavel Raiskup
bbc325efdb Make sure the SMA window has really at least 2 seconds
This could cause problems on very unstable connections.  When next()
wasn't called for a long time, and then it was called very frequently
(so time() returned 4x the same value) we were clean()ing the
window.dequeue so much so we got "last" equal to "deque[0][0]",
therefore counter/(last - deque[0][0]) could cause a division by zero.

In theory, this would also solve some temporary situations when
subsequent calls to time() did not return consecutive values:

    >>> a = time() ; b = time() ; a > b
    True

Resolves: rhbz#2103093
Version: 1.6-4
2022-07-02 11:07:04 +02:00
Python Maint
1d8a18691b Rebuilt for Python 3.11 2022-06-13 15:14:03 +02:00
Fedora Release Engineering
40e61ae260 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-21 14:18:42 +00:00
Pavel Raiskup
22463f2e42 New upstream release
Resolves: rhbz#1987117
Version: 1.6-1
2021-12-04 19:50:18 +01:00
Fedora Release Engineering
b6118e8650 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 08:21:46 +00:00
Python Maint
4aad60a738 Rebuilt for Python 3.10 2021-06-04 20:51:43 +02:00
Fedora Release Engineering
f802995f36 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 12:24:24 +00:00
Fedora Release Engineering
582f828b59 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 02:54:20 +00:00
Miro Hrončok
40b9d50d82 Replace Python version glob with macro (needed for Python 3.10+)
See https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/PQIGCQCRNBYNXBX2ICWEM3PLDLNOG2ZT/

Co-authored-by: Tomas Hrnciar <thrnciar@redhat.com>
2020-07-13 21:04:36 +02:00
Miro Hrončok
495376923b Rebuilt for Python 3.9 2020-05-26 03:31:28 +02:00
Fedora Release Engineering
e9f0d5214f - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-30 14:12:37 +00:00
Miro Hrončok
9073d294fb Rebuilt for Python 3.8.0rc1 (#1748018) 2019-10-03 14:23:50 +02:00
Pavel Raiskup
10008e4a43 Merge branch 'master' into epel8 2019-09-26 16:22:40 +02:00
Pavel Raiskup
682ce814c1 drop package.cfg
This is to avoid differences in master and epel8 branch.
2019-09-26 16:22:28 +02:00
Gwyn Ciesla
97fe74ee79 "Adding package.cfg file" 2019-09-26 08:42:02 -05:00
Miro Hrončok
c326a74a7b Rebuilt for Python 3.8 2019-08-19 10:50:37 +02:00
5 changed files with 174 additions and 100 deletions

View file

@ -11,7 +11,7 @@ Since the upstream default window size is only of size 10 items
(by default), it calculates the average speed only for the last (by default), it calculates the average speed only for the last
~0.005s. We could enlarge the size of window (sma_window param), ~0.005s. We could enlarge the size of window (sma_window param),
but the algorithm is so naive that it would decrease the but the algorithm is so naive that it would decrease the
performance. performance (O(N): sum(queue)/len(queue)).
This has been discussed very extensively with upstream (PR 24 and This has been discussed very extensively with upstream (PR 24 and
friends) but I neither was not able to explain the problem, nor I friends) but I neither was not able to explain the problem, nor I
@ -22,36 +22,14 @@ compatibility - changes the algorithm so the average speed is
calculation is fast enough, and much more stable (by default it calculation is fast enough, and much more stable (by default it
calculates speed for window of 2 seconds). calculates speed for window of 2 seconds).
We also don't seem to have the monotonic() mess, since we don't seem
to suffer from the same issues.
Fork with this patch backported is maintained in Fork with this patch backported is maintained in
https://github.com/python-progress/python-progress https://github.com/python-progress/python-progress
diff --git a/MANIFEST.in b/MANIFEST.in
index ef7c4cb..0c73842 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,2 +1 @@
include README.rst LICENSE
-include test_*.py
diff --git a/progress/__init__.py b/progress/__init__.py diff --git a/progress/__init__.py b/progress/__init__.py
index e434c25..1cbdce6 100644 index b434b30..f26056d 100644
--- a/progress/__init__.py --- a/progress/__init__.py
+++ b/progress/__init__.py +++ b/progress/__init__.py
@@ -18,10 +18,7 @@ from collections import deque @@ -30,19 +30,55 @@ HIDE_CURSOR = '\x1b[?25l'
from datetime import timedelta
from math import ceil
from sys import stderr
-try:
- from time import monotonic
-except ImportError:
- from time import time as monotonic
+from time import time
__version__ = '1.5'
@@ -30,19 +27,55 @@ HIDE_CURSOR = '\x1b[?25l'
SHOW_CURSOR = '\x1b[?25h' SHOW_CURSOR = '\x1b[?25h'
@ -63,7 +41,7 @@ index e434c25..1cbdce6 100644
+ self.max_seconds = max_seconds + self.max_seconds = max_seconds
+ self.max_items = max_items + self.max_items = max_items
+ +
+ stamp = time() + stamp = monotonic()
+ self.last = stamp - 0.001 + self.last = stamp - 0.001
+ self.counter = 0 + self.counter = 0
+ self.deque = deque() + self.deque = deque()
@ -77,7 +55,7 @@ index e434c25..1cbdce6 100644
+ if self.max_items: + if self.max_items:
+ while len(self.deque) > self.max_items: + while len(self.deque) > self.max_items:
+ self.pop() + self.pop()
+ while len(self.deque) > 2 and self.last - self.deque[0][0] > float(self.max_seconds): + while len(self.deque) > 2 and self.last - self.deque[1][0] > float(self.max_seconds):
+ self.pop() + self.pop()
+ +
+ def next(self, n, t): + def next(self, n, t):
@ -103,30 +81,26 @@ index e434c25..1cbdce6 100644
def __init__(self, message='', **kwargs): def __init__(self, message='', **kwargs):
self.index = 0 self.index = 0
- self.start_ts = monotonic() self.start_ts = monotonic()
- self.avg = 0 - self.avg = 0
- self._avg_update_ts = self.start_ts - self._avg_update_ts = self.start_ts
- self._ts = self.start_ts - self._ts = self.start_ts
- self._xput = deque(maxlen=self.sma_window) - self._xput = deque(maxlen=self.sma_window)
+ self.start_ts = time()
+ self.window = _Window(self.sma_window_seconds, self.sma_window) + self.window = _Window(self.sma_window_seconds, self.sma_window)
for key, val in kwargs.items(): for key, val in kwargs.items():
setattr(self, key, val) setattr(self, key, val)
@@ -62,23 +95,19 @@ class Infinite(object): @@ -69,21 +105,17 @@ class Infinite(object):
@property
def elapsed(self): def elapsed(self):
- return int(monotonic() - self.start_ts) return int(monotonic() - self.start_ts)
+ return int(time() - self.start_ts)
+
+ @property + @property
+ def avg(self): + def avg(self):
+ speed = self.window.avg + speed = self.window.avg
+ if speed: + if speed:
+ return 1/speed + return 1/speed
+ return 3600 # better constant? + return float("inf")
+
@property @property
def elapsed_td(self): def elapsed_td(self):
return timedelta(seconds=self.elapsed) return timedelta(seconds=self.elapsed)
@ -145,15 +119,20 @@ index e434c25..1cbdce6 100644
def update(self): def update(self):
pass pass
@@ -112,10 +141,7 @@ class Infinite(object): @@ -112,14 +144,10 @@ class Infinite(object):
return self.file.isatty() if self.check_tty else True try:
return self.file.isatty() if self.check_tty else True
except AttributeError:
- msg = "%s has no attribute 'isatty'. Try setting check_tty=False." % self
- raise AttributeError(msg)
+ raise AttributeError('\'{}\' object has no attribute \'isatty\'. Try setting parameter check_tty=False.'.format(self))
def next(self, n=1): def next(self, n=1):
- now = monotonic() - now = monotonic()
- dt = now - self._ts - dt = now - self._ts
- self.update_avg(n, dt) - self.update_avg(n, dt)
- self._ts = now - self._ts = now
+ self.window.next(n, time()) + self.window.next(n, monotonic())
self.index = self.index + n self.index = self.index + n
self.update() self.update()

1
README.md Normal file
View file

@ -0,0 +1 @@
See also automatic push/pr [Copr builds](https://copr.fedorainfracloud.org/coprs/praiskup/enterprise-ci-python-progress/).

39
build-and-update-all-branches Executable file
View file

@ -0,0 +1,39 @@
#! /bin/sh
# Prepare main branch, review the list of branches below and then execute this
# script.
branches='main epel8 epel9 epel10 f39 f40 f41'
exit_handler ()
{
git checkout main
}
trap exit_handler EXIT
set -e
set -x
koji hello
tasks=
for branch in $branches; do
if test $branch != main; then
git checkout "$branch"
git merge main
fi
git push
skip_nvr_check=
if test $branch = epel7; then
skip_nvr_check=--skip-nvr-check
fi
tasks="${tasks}`fedpkg build $skip_nvr_check --nowait | grep 'Created task' | cut -d: -f2`"
done
if test -n "$tasks"; then
koji watch-task $tasks
fi
git checkout main
fedpkg update

View file

@ -1,103 +1,158 @@
%if 0%{?fedora}
%bcond_without python3
%if 0%{?fedora} > 29
%bcond_with python2
%else
%bcond_without python2
%endif
%else
%if 0%{?rhel} > 7
%bcond_with python2
%bcond_without python3
%else
%bcond_without python2
%bcond_with python3
%endif
%endif
# Created by pyp2rpm-0.5.2
%global pypi_name progress %global pypi_name progress
Name: python-%{pypi_name} Name: python-%{pypi_name}
Version: 1.5 Version: 1.6
Release: 2%{?dist} Release: 19%{?dist}
Summary: Easy to use progress bars Summary: Easy to use progress bars
License: ISC License: ISC
URL: http://github.com/verigak/progress/ URL: http://github.com/verigak/progress/
Source0: %pypi_source Source0: %{pypi_source %{pypi_name}}
BuildArch: noarch BuildArch: noarch
%if %{with python2}
BuildRequires: python2-devel
BuildRequires: python2-setuptools
%endif
%if %{with python3}
BuildRequires: python3-devel BuildRequires: python3-devel
%if %{defined el8}
BuildRequires: python3-setuptools BuildRequires: python3-setuptools
%endif %endif
Patch1: 0001-fixup-moving-average-window.patch Patch1: 0001-fixup-moving-average-window.patch
%global _description\ %global _description %{expand:
Collection of easy to use progress bars and spinners.\ Collection of easy to use progress bars and spinners.}
%description %_description %description %_description
%if 0%{with python2}
%package -n python2-%{pypi_name}
Summary: %summary
%{?python_provide:%python_provide python2-%{pypi_name}}
%description -n python2-%{pypi_name} %_description
%endif # python2
%if 0%{with python3}
%package -n python3-%{pypi_name} %package -n python3-%{pypi_name}
Summary: Easy to use progress bars Summary: Easy to use progress bars
%description -n python3-%{pypi_name} %description -n python3-%{pypi_name} %_description
Collection of easy to use progress bars and spinners.
%endif # python3
%prep %prep
%autosetup -p1 -n %{pypi_name}-%{version} %autosetup -p1 -n %{pypi_name}-%{version}
# Remove bundled egg-info
rm -rf %{pypi_name}.egg-info %if %{undefined el8}
%generate_buildrequires
%pyproject_buildrequires
%endif
%build %build
%{?with_python2: %py2_build} %if %{defined el8}
%{?with_python3: %py3_build} %py3_build
%else
%pyproject_wheel
%endif
%install %install
%{?with_python2: %py2_install} %if %{defined el8}
%{?with_python3: %py3_install} %py3_install
%else
%pyproject_install
%if 0%{with python2} %pyproject_save_files -l %{pypi_name}
%files -n python2-%{pypi_name}
%doc README.rst LICENSE
%{python2_sitelib}/%{pypi_name}
%{python2_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info
%endif %endif
%if 0%{with python3}
%files -n python3-%{pypi_name} %check
%doc README.rst LICENSE %if %{defined el8}
%py3_check_import %{pypi_name}
%else
%pyproject_check_import
%endif
%files -n python3-%{pypi_name} %{!?el8:-f %{pyproject_files}}
%doc README.rst
%if %{defined el8}
%license LICENSE
%{python3_sitelib}/%{pypi_name} %{python3_sitelib}/%{pypi_name}
%{python3_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info %{python3_sitelib}/%{pypi_name}-%{version}-py%{python3_version}.egg-info
%endif %endif
%changelog %changelog
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 1.6-19
- Rebuilt for Python 3.14.0rc3 bytecode
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 1.6-18
- Rebuilt for Python 3.14.0rc2 bytecode
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Mon Jun 02 2025 Python Maint <python-maint@redhat.com> - 1.6-16
- Rebuilt for Python 3.14
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Tue Sep 24 2024 Carl George <carlwgeorge@fedoraproject.org> - 1.6-14
- Convert to pyproject macros
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 1.6-12
- Rebuilt for Python 3.13
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 1.6-8
- Rebuilt for Python 3.12
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Jul 22 2022 Pavel Raiskup <praiskup@redhat.com> - 1.6-6
- use time.monotonic(), bar.avg is infinity for zero speed
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat Jul 02 2022 Pavel Raiskup <praiskup@redhat.com> - 1.6-4
- fix for very frequent next() call, rhbz#2103093
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 1.6-3
- Rebuilt for Python 3.11
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 1.5-9
- Rebuilt for Python 3.10
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 1.5-6
- Rebuilt for Python 3.9
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 1.5-4
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1.5-3
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-2 * Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

View file

@ -1 +1 @@
SHA512 (progress-1.5.tar.gz) = a9bee3498746233f874da2d6509d052882d9592df69c223637279a1fae40174a4dc279b56a7558e95ed173b0d357ae07752501c577a3cb9c79e0f87095838896 SHA512 (progress-1.6.tar.gz) = 58a614bba5a7273a42ba5e9607b3a965fec17f26a4f24563d4c13679ea32b23dda7509c5da81a2a34bebeeedd91154d0457ab8dac95cc7a092add2567249cc94