diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 3e32af0..c3bf19b 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -4,7 +4,7 @@ on: branches: [ master ] jobs: build: - runs-on: hostinger + runs-on: woryzen steps: - name: Checkout sources uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 2dd5a3d..6813a75 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "jpacrepo-uploader" -version = "0.0.5" +version = "0.0.6" authors = [ { name="Walter Oggioni", email="oggioni.walter@gmail.com" }, ] @@ -23,7 +23,7 @@ dependencies = [ 'pycurl', 'types-pycurl', 'typing_extensions', - 'pwo >= 0.0.2' + 'pwo >= 0.1.2' ] [project.optional-dependencies] diff --git a/requirements-dev.txt b/requirements-dev.txt index 5b50853..a27a8c2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,29 +1,29 @@ # -# This file is autogenerated by pip-compile with Python 3.13 +# This file is autogenerated by pip-compile with Python 3.14 # by the following command: # -# pip-compile --cert=None --client-cert=None --extra=dev --index-url=None --output-file=requirements-dev.txt --pip-args=None --strip-extras pyproject.toml +# pip-compile --allow-unsafe --extra=dev --output-file=requirements-dev.txt pyproject.toml # --index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple --extra-index-url https://pypi.org/simple asttokens==3.0.1 # via stack-data -build==1.3.0 +build==1.4.3 # via # jpacrepo-uploader (pyproject.toml) # pip-tools -certifi==2025.11.12 +certifi==2026.2.25 # via # jpacrepo-uploader (pyproject.toml) # requests cffi==2.0.0 # via cryptography -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via pip-tools -cryptography==46.0.3 +cryptography==46.0.7 # via secretstorage decorator==5.2.1 # via @@ -33,21 +33,21 @@ docutils==0.22.4 # via readme-renderer executing==2.2.1 # via stack-data -id==1.5.0 +id==1.6.1 # via twine idna==3.11 # via requests ipdb==0.13.13 # via jpacrepo-uploader (pyproject.toml) -ipython==9.8.0 +ipython==9.12.0 # via ipdb ipython-pygments-lexers==1.1.1 # via ipython jaraco-classes==3.4.0 # via keyring -jaraco-context==6.0.1 +jaraco-context==6.1.2 # via keyring -jaraco-functools==4.3.0 +jaraco-functools==4.4.0 # via keyring jedi==0.19.2 # via ipython @@ -57,7 +57,7 @@ jeepney==0.9.0 # secretstorage keyring==25.7.0 # via twine -librt==0.7.4 +librt==0.9.0 # via mypy markdown-it-py==4.0.0 # via rich @@ -65,29 +65,30 @@ matplotlib-inline==0.2.1 # via ipython mdurl==0.1.2 # via markdown-it-py -more-itertools==10.8.0 +more-itertools==11.0.2 # via # jaraco-classes # jaraco-functools -mypy==1.19.1 +mypy==1.20.1 # via jpacrepo-uploader (pyproject.toml) mypy-extensions==1.1.0 # via mypy -nh3==0.3.2 +nh3==0.3.4 # via readme-renderer oidc-client==0.2.6 # via jpacrepo-uploader (pyproject.toml) -packaging==25.0 +packaging==26.1 # via # build # twine -parso==0.8.5 + # wheel +parso==0.8.6 # via jedi -pathspec==0.12.1 +pathspec==1.0.4 # via mypy pexpect==4.9.0 # via ipython -pip-tools==7.5.2 +pip-tools==7.5.3 # via jpacrepo-uploader (pyproject.toml) progress==1.6.1 # via jpacrepo-uploader (pyproject.toml) @@ -97,13 +98,13 @@ ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pwo==0.0.7 +pwo==0.1.2 # via jpacrepo-uploader (pyproject.toml) -pycparser==2.23 +pycparser==3.0 # via cffi pycurl==7.45.7 # via jpacrepo-uploader (pyproject.toml) -pygments==2.19.2 +pygments==2.20.0 # via # ipython # ipython-pygments-lexers @@ -115,16 +116,15 @@ pyproject-hooks==1.2.0 # pip-tools readme-renderer==44.0 # via twine -requests==2.32.5 +requests==2.33.1 # via - # id # requests-toolbelt # twine requests-toolbelt==1.0.0 # via twine rfc3986==2.0.0 # via twine -rich==14.2.0 +rich==15.0.0 # via twine secretstorage==3.5.0 # via keyring @@ -136,22 +136,25 @@ traitlets==5.14.3 # matplotlib-inline twine==6.2.0 # via jpacrepo-uploader (pyproject.toml) -types-pycurl==7.45.7.20251101 +types-pycurl==7.45.7.20260408 # via jpacrepo-uploader (pyproject.toml) typing-extensions==4.15.0 # via # jpacrepo-uploader (pyproject.toml) # mypy # pwo -urllib3==2.6.2 +urllib3==2.6.3 # via + # id # requests # twine -wcwidth==0.2.14 +wcwidth==0.6.0 # via prompt-toolkit -wheel==0.45.1 +wheel==0.46.3 # via pip-tools # The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools +pip==26.0.1 + # via pip-tools +setuptools==82.0.1 + # via pip-tools diff --git a/requirements.txt b/requirements.txt index 61a9e36..192826e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,23 +1,23 @@ # -# This file is autogenerated by pip-compile with Python 3.13 +# This file is autogenerated by pip-compile with Python 3.14 # by the following command: # -# pip-compile --cert=None --client-cert=None --index-url=None --output-file=requirements.txt --pip-args=None --strip-extras pyproject.toml +# pip-compile --allow-unsafe --output-file=requirements.txt pyproject.toml # --index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple --extra-index-url https://pypi.org/simple -certifi==2025.11.12 +certifi==2026.2.25 # via jpacrepo-uploader (pyproject.toml) oidc-client==0.2.6 # via jpacrepo-uploader (pyproject.toml) progress==1.6.1 # via jpacrepo-uploader (pyproject.toml) -pwo==0.0.7 +pwo==0.1.2 # via jpacrepo-uploader (pyproject.toml) pycurl==7.45.7 # via jpacrepo-uploader (pyproject.toml) -types-pycurl==7.45.7.20251101 +types-pycurl==7.45.7.20260408 # via jpacrepo-uploader (pyproject.toml) typing-extensions==4.15.0 # via diff --git a/src/jpacrepo_uploader/uploader.py b/src/jpacrepo_uploader/uploader.py index ddd21de..dfb5c83 100644 --- a/src/jpacrepo_uploader/uploader.py +++ b/src/jpacrepo_uploader/uploader.py @@ -1,6 +1,7 @@ import json import logging import re +import shutil import urllib.parse from argparse import ArgumentParser from dataclasses import dataclass, fields @@ -61,7 +62,8 @@ class PackageUploadProgressBar(Bar): **kwargs: Any): kwargs.setdefault('suffix', 'speed: %(total_speed)s, completed: %(percent).2f%% - ETA: %(eta_td)s') - kwargs.setdefault('width', 48) + terminal_size = shutil.get_terminal_size(fallback=(80, 24)) + kwargs.setdefault('width', terminal_size[0] - 80) super().__init__(*args, **kwargs) self.uploaded_size = uploaded_size self.packages_total_size = packages_total_size @@ -77,7 +79,7 @@ class PackageUploadProgressBar(Bar): @property def total_speed(self) -> str: - return format_filesize(self.total_avg) + '/s' + return format_filesize(self.total_avg, 5, 2) + '/s' @Progress.eta.getter def eta(self) -> int: @@ -93,7 +95,7 @@ class PackageUploadProgressBar(Bar): @property def upload_progress(self) -> str: - return f'{format_filesize(self.index)} / {format_filesize(self.max)}' + return f'{format_filesize(self.index, 5, 2)} / {format_filesize(self.max, 5, 2)}' class XferProgress: @@ -261,13 +263,15 @@ class JpacrepoClient: start_ts = monotonic() for i, file in enumerate(files): upload_size = file.stat().st_size + if len(file.name) <= 16: + filename = file.name + else: + filename = file.name[:14] + '...' kwargs = dict( - width=64, max=upload_size, - message=f'({i + 1}/{len(files)}) {file.name}', + message=f'({i + 1}/{len(files)}) {filename}', start_ts=start_ts ) - with PackageUploadProgressBar(progress.uploaded_size, total_size, **kwargs) as bar: bar.start_ts = start_ts progress.bar = bar