updated dependencies and fixed terminal size
CI / build (push) Successful in 26s

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